도카이트

[Wargame] Webhacking.kr - old 33 본문

Wargame/Webhacking.kr

[Wargame] Webhacking.kr - old 33

dodoh4t 2022. 6. 20. 23:28
728x90
반응형

문제 화면

[old 33 - 문제 화면]

- 첫 문제 페이지의 소스 코드이다.

- GET 파라미터 값으로 get = hehe를 입력하면, 앵커 태그로 Next 링크가 출력된다.

- Next 를 클릭하여 이동 시 lv2.php 페이지로 이동할 수 있다.

 

 

lv2.php 소스코드

[lv2.php 소스코드]

- hehe 를 참 좋아하는 것 같다.. 이번에는 POST 방식으로 hehe를 보내라고 한다.

- Burp Suite를 이용하여 패킷을 POST 패킷 형태로 변조하여 Forward 시켜주도록 하자 !

 

 

Burp Suite를 이용한 패킷 변조

[Burp Suite를 이용한 패킷 변조]

- 페이지를 새로 고침한 뒤 새로고침으로 로드되는 GET 패킷을 Intercept 한다.

- Method 부분을 POST로 수정하고, Content-Length와 Content-Type 부분을 추가 작성한다.

- 또한 Body 부분에 앞서 페이지 소스코드에서 확인한 조건에 맞게 값을 입력한다.

 

 

REMOTE_ADDR 입력

[REMOTE_ADDR 입력]

- 또(?) 문제가 등장했다.. 조금 귀찮아진다 여기서부터는..

- myip 파라미터 값으로 사용자의 remote_addr 즉 외부 ip를 입력해줘야한다.

- 사용자의 외부 ip의 경우 https://www.findip.kr/ 를 통해 쉽게 확인할 수 있다.

- GET 파라미터 값으로 myip=[사용자 외부 ip]를 입력하면 다음 단계로 넘어갈 수 있다.

 

 

md5(time()) 값 입력

[md5(time()) 값 입력]

- 또(?) 문제가 등장했다.. 진짜 끝이 없다..

- 이번에는 password 파라미터 값으로 md5(time()) 값을 입력해줘야 한다.

- hint 값에 대하여 md5 해시 암호화를 하여 password 값으로 입력해줘야 한다.

- 그러나, time 의 경우 시간이 지날 수록 계속 값이 변화하여 처음 화면에서 출력한 값을 md5 해시화를 해서

  입력하면 시간이 지나가 문제를 해결할 수 없다.

- 따라서 넉넉하게 hint 값에서 +30 정도를 한 값을 미리 계산하여 URL에 입력 후 시간이 맞을 때까지 새로고침해준다.

- md5 의 경우 Python의 hashlib 모듈을 이용하거나, md5 해시 암호화를 해주는 웹 사이트 등을 이용하도록 한다 !

 

 

GET, POST, COOKIE

[GET, POST, COOKIE]

- GET 파라미터로 imget 값을, POST 파라미터로 impost 값을, COOKIE 값으로 imcookie를 요구한다.

- 정말 가면 갈 수록 귀찮아지는 문제인 듯 하다..

- 다시 한 번 Burp Suite를 이용하여 패킷을 변조해주도록 하자 !

 

 

imcookie 생성 및 패킷 변조

[imcookie 생성 및 패킷 변조]

- Cookie 헤더에 imcookie=1 을 작성하여 imcookie 값을 생성해주고,

- Method는 POST 방식으로 변조 후, URL 뒤에 ?imget=1 을 추가 작성하여, GET 파라미터 조건도 만족시켜준다.

- 또한 앞서 했던 방법과 동일하게 Content-Length와 Content-Type 부분을 작성 후, Body 부분에 impost 값을 입력해준다.

 

 

cookie 값 및 POST 파라미터 값 요구

[cookie 값 및 POST 파라미터 값 요구]

- 이쯤 되면 문제가 끝이 없어보인다. 또 나왔다..

- test 쿠키 값으로 md5 해시화된 REMOTE_ADDR 값을 요구하고, POST 파라미터 값으로 md5 해시화된

  HTTP_USER_AGENT 값을 요구하고 있다.

 

 

cookie 값 설정 및 kk 값 입력

[cookie 값 설정 및 kk 값 입력]

- test 쿠키 값으로 md5 해시화된 사용자의 외부 ip 값을 입력해주고, POST 파라미터 값으로 md5 해시화된 User-Agent 값을

  입력하여 패킷을 Forward 해주도록 한다 !

- 오탈자에 주의하여 각 헤더와 값 부분을 입력해주도록 하자.

 

 

str_replace 적용 REMOTE_ADDR 입력

[str_replace 적용 REMOTE_ADDR 입력]

- str_replace 함수를 통해 사용자의 외부 ip에 대해 . 을 공백으로 치환하고 있다.

- GET 파라미터 값으로 $_SERVER[’REMOTE_ADDR’]] = $_SERVER[’REMOTE_ADDR’] 을 받는다.

- 따라서 파라미터 값 형식은 ?xxxxxxxxxxxx=xxxxxxxxxxxx 형식이 된다.

- 앞서 확인한 사용자의 외부 ip를 . 을 제외하고 그대로 입력해주면 된다.

 

 

addr 값에 127.0.0.1 입력

[addr 값에 127.0.0.1 입력]

- 생각보다 갑자기 너무 간단해졌다.

- GET 파라미터 값으로 addr 값을 입력받는 데, 이 값이 127.0.0.1 이 되면 된다.

- ?addr=127.0.0.1 을 작성해주면 바로 넘어갈 수 있다.

 

 

$answer 값 입력

[$answer 값 입력]

- for 문을 통해 answer 변수를 선언하고 있다.

- 97부터 122까지 $i=$i+2를 반복하며 chr 함수를 통해 아스키 코드를 문자열로 입력하는 듯 하다.

- PHP Compiler 사이트를 통해 해당 for 문을 그대로 돌려서 빠르게 $answer 값을 확인해보자.

 

 

PHP Compiler를 통한 $answer 값 확인

[PHP Compiler를 통한 $answer 값 확인]

- PHP Compiler 웹 사이트를 이용하여 해당 for문을 빠르게 실행해보도록 한다.

- $answer 변수 값을 확인할 수 있으며 해당 문자열을 복사하여 ans 값에 입력해주도록 한다 !

 

참고) https://www.w3schools.com/php/phptryit.asp?filename=tryphp_compiler

 

PHP Tryit Editor v1.2

<!--?php $txt = "PHP"; echo "I love $txt!"; ?-->

www.w3schools.com

 

 

answerip/{$answer}_{$ip}.php 접근

[answerip/{$answer}_{$ip}.php 접근]

- $ip와 $answer 값을 알아내어 fopen 함수에 작성된 경로의 .php 페이지로 접근하면 될 듯 하다.

- 그대로 앞서 사용한 PHP Compiler 를 이용해 $ip 변수에 자신의 외부 ip 주소를 입력하여 값을 알아내본다 !

 

 

PHP Compiler를 이용한 $answer, $ip 값 획득

[PHP Compiler를 이용한 $answer, $ip 값 획득]

- 실행 결과로 answerip/27553775775_5510755155를 출력함을 확인할 수 있다.

- answerip/27553775775_5510755155.php 를 URL에 추가 입력하여 해당 php 페이지에 접근 시

- 성공적으로 문제를 solve 할 수 있다 !

728x90

'Wargame > Webhacking.kr' 카테고리의 다른 글

[Wargame] Webhacking.kr - old 50  (0) 2022.06.20
[Wargame] Webhacking.kr - old 34  (0) 2022.06.20
[Wargame] Webhacking.kr - old 32  (0) 2022.06.20
[Wargame] Webhacking.kr - old 27  (0) 2022.06.17
[Wargame] Webhacking.kr - old 26  (0) 2022.06.16
Comments