Webhkacing.kr 의 33번 문제 풀이이다.

 

매우 긴 포스팅이 될거라 예상한다 ..

정답이 공개되어 있으니 참고하고 포스팅을 읽기 바란다.

 

 

인덱스 페이지를 확인해보자 .

Wrong 이란 문자열이 표시되고, 힌트로 phps 가 제공된다.

 

소스를 확인해보자.

( 33 – 1 )

힌트 페이지를 html 에 출력하고,

get방식으로 넘어오는 get이란 이름의 폼에 값이 hehe 이면 Next 링크를 띄운다.

 

?get=hehe 를 붙여서 페이지를 넘겨보자.

Next 링크가 나왔다.

 

다음으로 가서 힌트를 보자.

 

( 33 – 2 )

 

post 방식의 post, post2 라는 이름의 폼값에 hehe, hehe2 를 넣어서 전송하면 된다.

post 방식이다 보니 개발자도구에서 html 로 폼을 만들어 전송을 하거나,

javascript 를 통해서 값을 전송하도록 하자.

 

-HTML-

<form method="post" action="http://webhacking.kr/challenge/bonus/bonus-6/lv2.php">

<input type="text" name="post"><br>

<input type="text" name="post2"><br>

<input type="submit">

</form>

 

- JavaScript –

 

 

( 33 – 2 )

 

 

 

 

다음은 33-3 의 소스이다.

get으로 넘어온 myip 라는 이름의 값과 내 접속 ip 와 같다면 다음으로 갈 수 있다.

 

대부분 공유기 환경일 터이니 http://www.findip.kr/ 를 통해 자신의 IP 를 확인하기 바란다.

그 후 myip 라는 이름으로 ip 를 넘겨주면 된다.

 

 

 

 

 

 

 

 

33-4 의 소스를 보자.

( 33 – 4 )

 

현재 시간을 md5 로 해싱한 값과 내가 password 로 넘긴 값과 비교를 하고 있다.

페이지에는 힌트로 현재 타임스탬프를 표시해준다 .

 

타임스탬프를 md5 로 해싱한 뒤 password 라는 이름으로 해시값을 넘겨서 전송하면 된다.

 

힌트로 넘어오는 값에서 좀 더 더한 값을 해시시킨 후 값을 넘긴다음

값이 일치할때까지 F5 를 연타하면 된다 !

 

md5 를 좀 더 빠르게 변환하기 위해서 파이썬에서 소스를 만들었다

 

값을 입력 한 뒤 해당 값을 붙여 넣으면 된다.

 

 

 

 

 

 

 

33 – 5 의 소스를 확인해보자.

( 33 – 5 )

 

이번엔 Get, Post, Cookie 의 3연타이다.

이 정도는 다 가뿐히 넘길거라 예상하며

위에서 했던 방식으로 자바스크립트에 익숙해질 겸 스크립트로 넘겨보자.

 

- JavaScript –

 

( 33 – 5 )

 

 

 

 

 

33 – 6 의 소스를 확인해보자.

( 33 – 6 )

 

소스를 확인해보니 test 이름의 쿠키와 나의 IP를 md5 로 해싱한 값과 같아야 하고,

post 방식의 kk 란 이름으로 넘어간 값과 내 USER_AGENT 값을 해싱한 값과 같아야 한다.

인덱스 페이지에서 힌트로 나의 USER_AGENT 값을 보여주고 있으며,

접속 IP 또한 아까 사용했던 http://www.findip.kr/ 를 통해 IP 를 확인하자.

 

md5 로 해싱 하는 것도 아까 파이썬 스크립트를 짜 놓은게 있으니 활용하겠다.

 

- JavaScript -

 

 

 

 

 

 

후아… 힘들다 ……

33 – 7 의 소스를 확인하자 -_-;

내 접속 IP 에서 '.' (dot) 을 뺀 값을 서버 전역변수에 저장한다.

그 후 Get 방식으로 넘어오는 나의 IP ( dot 을 뺀 숫자 ) 의 이름을 가진 값

나의 IP ( dot 을 뺀 숫자 ) 와 같으면 Next 로 된다.

 

접속 IP 에서 . 을 뺀 값의 이름에 다시 그 값을 넣어서 보내자.

( 이해가 안되면 $_SERVER[REMOTE_ADDR] 이 몇인지 확인을 하며 보길 바란다. )

 

 

 

 

 

 

33 – 8 의 소스를 보자 .

get 으로 넘어온 addr에 값이 없을 경우 나의 접속 ip 로 $addr 을 만든다.

get으로 addr 에 값을 127.0.0.1 을 넘기면 Next 가 나타난다.

 

 

 

 

 

 

 

거의 다 와간다 …!

33 – 9 의 소스를 보자.

97 ~ 122 까지 i를 2씩 증가시키며 해당 아스키 값의 문자로 변환 시킨 후,

answer 에 더해가며 문자열을 완성한다.

 

간단히 a~z 까지 이지만 연습 겸 간단한 파이썬 스크립트 제작을 하자.

 

스크립트의 결과 값은 acegikmoqsuwy 이다.

 

get 방식으로 ans= acegikmoqsuwy 를 넘겨주자.

 

 

 

 

 

 

마지막 문제이다 !!!!

33 – 10 문제의 소스를 확인하자.

지금까지와는 좀 더 높은 레벨인 듯 싶다.

( 물론 길이만.. )

차근차근 분석해보자.

1 스탬프가 찍힌곳은 나의 접속ip길이만큼 반복을 돌며

$i 값을 아스키 값으로 바꾼다.

그 후 '.' 을 없애버린 후

첫번째부터 10번째 글자까지 잘라버린다.

( 이상하게 파이썬으로 만들면 결과값이 달라져서 … php 로 그대로 구현하였다 .. )

 

 

원본 소스에서 fopen 함수를 보면 answer/$ip/answer.$ip 의 경로에 파일 디스크립터를 받고,

$pw 를 파일에 쓴다.

 

저 출력값에 접근하면 다음과 같이 파일 내용이 보인다..

 

password 값을 auth 에서 인증하면 클리어 ~

'WarGame > WEB_Hacking' 카테고리의 다른 글

Webhacking.kr 32번 문제풀이  (0) 2015.11.14
Webhacking.kr 27번 문제풀이  (0) 2015.11.14
Webhacking.kr 26번 문제풀이  (0) 2015.11.14
Webhacking.kr 25번 문제풀이  (0) 2015.11.14
Webhacking.kr 24번 문제풀이  (0) 2015.11.14

+ Recent posts