old33을 누르면
다음과 같이 나온다.
힌트를 얻기 위해서 view-source를 누른다
소스를 확인하면
GET 방식으로 'get'이라는 변수에 'hehe'라는 값이 들어가면 다음페이지로 넘어가는 무엇인가 나온다는 것 같다
GET 방식으로 변수를 저장하는 방법은 URL 뒤에 ?를 붙여 준 뒤에 변수 = 값 으로 집어 넣는다
-> ?get=hehe
다음의 값을 URL 뒤에 붙여주면
다음과 같이 wrong이 Next로 바뀌었다.
다음으로 넘어가기 위해서 Next 버튼을 눌러준다.
2단계로 넘어 왔다
2단계의 source를 확인하면
post 방식으로 변수를 받아서 그 값이 hehe랑 hehe2이면 Next 버튼을 띄어준다고 한다.
근데 POST 방식은 GET 방식 처럼 URL 뒤에 변수를 대입해서 보낼 수 없다.
그렇기 때문에 POST 방식으로 데이터를 보낼 수 있도록 HTML 코드를 수정해 주면 된다.
수정하는 방식은 Chrome 기준 F12 -> 오른쪽 마우스 -> Edit as HTML을 눌러주면 코드를 수정할 수 있다.
코드를 수정할 수 있으면 다음과 같은 코드를 입력해 준다.
<form method = "post" action="lv2.php">
post = <input type = "text"name = "post"><br>
post2 = <input type = "text" name = "post2">
<input type = "submit" value = "전송">
</form>
다음과 같은 코드를 입력해 주면
다음과 같이 값을 입력하고 전송할 수 있는 form이 만들어진다.
이제 post에는 hehe를 post2에는 hehe2를 집어넣어준다.
다음과 같이 값을 입력하고 전송을 누르면
다음 단계로 넘어갈 수 있도록 Next 버튼이 나온다.
Next 버튼을 누르면
3단계가 나오고 소스를 확인하면
GET 방식으로 myip라는 변수 값이 SERVER[REMOTE_ADDR]이라는 변수 값과 같으면 된다.
SERVER[REMOTE_ADDR]은 현재 내 IP를 적으면 된다.
내 IP 확인 하는 법 = http://www.findip.kr/
GET 방식으로 내 IP만 전달해주면 되는 것이기 때문에 다음과 같이 입력해주면 된다.
->?myip=[내 IP 주소]
다음과 같이 입력하면
다음 단계로 넘어갈 수 있도록 버튼이 생긴다.
Next 버튼을 누르면
다음과 같은 page가 나온다.
코드를 확인해보면
다음과 같은 코드가 나오는데
password라는 변수의 값은 현재 시간을 md5해쉬 한 값이라고 한다.
그리고 hint는 현재시간을 의미한다고 한다.
일단 md5 해쉬 해주는 사이트에 들어간다.
그리고 hint가 보이는 페이지에 다시 돌아가 새로고침을 눌러주면 1초에 1씩 올라가는 것을 확인할 수 있다.
우리는 md5 변환하는 시간을 계산해서 현재 시간 +180을 해주어 3분뒤 시간에 대한 md5 해시값을 계산해준다.
타이밍에 맞게 시간 계산 한 해시값을 변수에 대입하면
다음과 같이 Next 버튼이 나온다.
Next 버튼을 누르면
5단계 문제가 나온다.
5단계의 소스코드를 확인해보면
imget변수는 get방식으로 impost 변수는 post 방식으로 imcookie 변수에 cookie를 집어넣어야 한다고 한다.
이제 BurpSuite를 사용해야 한다.
일단 post 방식으로 impost를 받기 위해 다음과 같이 코드를 입력한다.
<form method = "post" action = "md555.php">
impost<input type="text" name="impost">
<input type="submit" value = "전송">
</form>
다음과 같이 입력하면
다음과 같이 impost 값을 post로 보낼 수 있는 form이 나온다.
이제 impost는 post 방식으로 보냈고 다음으로 burpsuite를 들어간다음에
parms에
TYPE은 URL로 하고 imget 변수를 만들고 값에다가는 1을 대입해준다.
다음으로 COOKIE라는 TYPE을 add 한 다음에 변수에다가는 imcookie를 넣어주고 값에다가는 1을 넣어준다음에 패킷을 전송시키면
다음과 같이 Next 버튼이 나온다.
6단계를 확인해보면
다음과 같이 test라는 Cookie 값에다가는 내 IP주소를 md5 한 값을 집어넣고 post 방식으로 HTTP_USER_AGENT 값을 md5 한 값을 집어 넣어 전송하면 다음 단계로 넘어 갈 수 있다.
근데 친절하게 hint 부분에 HTTP_USER_AGENT 값을 알려주고 있다.
그렇기 때문에
패킷을 잡은 다음에 잡은 패킷에 test 쿠키값만 대입 해준다.
우선 md5 암호화 해주는 사이트에 들어가 hint 값을 md5 해시 해준다.
hint 해시값 : 49bd5de0f3500cf321f7989944e6548c
다음으로 내 IP 주소도 md5 해시 해준다.
그 다음 Burpsuite를 이용해 패킷을 잡아준다음에 Params 값을 변경 해준다.
다음과 같이 Cookie 값과 Body 값을 맞게 변경해준 다음에 패킷을 전송해주면
다음과 같이 Next 버튼이 나온다.
7단계 소스코드를 확인하면
IP주소를 GET 방식으로 전송해주면 되긴 하는데 .을 아무것도 Null 값으로 변경한다.
그렇기 때문에 .을 우회하는 방식으로 변경해주면 될 것 같다.
우선 ascii 코드로 우회해 보도록 하겠다.
'.'같은 경우 ascii 값으로 0x2E이다
그렇기 때문에 내 IP 주소 뒤에 점을 모두 %2E로 변경해준다.
다음과 같이 수행하면 안된다.
그래서 코드를 더 자세히 알아보던 중
서버에서 받아온 내 IP 중 .을 제거한 값과 서버에서 받아온 내 IP중 .을 제거한 값이 같아야 다음으로 넘어갈 수 있다는 것을 알아냈다.
그래서 내 IP에서 .을 없애 보았다.
->URL/?[.을 제거한 내 IP] = [.을 제거한 내 IP]
다음과 같이 입력하니
다음 단계로 넘어갈 수 있었다.
8단계의 코드를 확인해보니
내 IP주소를 GET 방식으로 받는데 그 IP 주소가 localhost 주소(127.0.0.1)이어야 다음단계로 넘어갈 수 있다고 한다.
프록시를 키면 될 것 같아서 프록시를 켜보기로 했다.
프록시를 키면 자동으로 localhost로 이동한다.
이제 내 IP는 127.0.0.1이다
이제 URL 뒤에 ?addr=127.0.0.1을 입력하면
다음으로 넘어갈 수 있다.
다음으로 넘어가면
다음과 같은 코드가 나오는데 i의 값은 chr($i)는 쉽게 말해 ascii 코드 값 97부터 122 까지 2씩 차이나는 값을 하나씩 대입하면 된다.(a, c, e~~순으로 z 까지 입력)
다음과 같이 입력하면
Next 버튼을 볼 수 있다.
10번은 조금 어려운거 같아서 한번 보고 다시 작성하도록 하겠다.