webhacking.kr 25번 문제 (old)

2019. 10. 16. 22:21Wargame/webhacking.kr

25번 문제에 들어가면 출력되는 화면이다.

-rw-r--r-- 1 root root 이런식으로 적혀있습니다.

이 기호는 리눅스에서 쓰이는 기호입니다.

그리고 문제의 주소창을 보면 GET 방식으로 파일명을 받아오는것 같습니다.

그리고 그 파일을 저 회색 화면에 출력하는것 같습니다.

근데 화면에는 파일명이 hello.php 라고 출력이 되어있는데 왜 주소창에는 hello 만 적혀져 있는것일까요?

아마도 주소창에서 받은 값에 .php 라는 문구를 더해줘서 

?file=hello 라고 적었으면

?file=hello.php 라고 인식되는것 같습니다. (뇌피셜...)

그러니 일단 flag.php 파일을 열기 위해서 주소창에 flag 를 입력해봅시다.

위의 사진을 보면 FLAG is in the code 라는 문구가 출력되었습니다.

위의 문구를 봐서 추측하기에 아마 flag.php 의 소스코드를 봐야할 것 같습니다.

이 문제에서는 PHP Wrapper 를 사용합니다.

PHP는 PHP스스로의 입출력 , 표준입출력 , 오류 파일 기술어 등에 엑세스 할수 있는 다양한 I/O 스트림을 제공하는데

이것을 PHP Wrapper 라고합니다.

이문제에서 사용할 php wrapper는 php://filter 입니다.

이 php://filter 라는 wrapper를 사용하는 방법은

php://filter/convert.base64-encode/resource=

이런 명령을 사용할 수 있는데,

이 공격의 목표는 페이지의 소스를 긁어오는 것입니다.

그래서 만약 hi 라는 php 소스를 알고 싶으면 공격코드는 

주소?pages=php://filter/convert.base64-encode/resource=hi.php

이 될 것입니다.

이 코드의 결과는 hi.php 의 소스를 base64로 인코딩한 것을 출력합니다.

그래서 출력값은 

PD9waHAKZWNobyAiaGkiOwo/Pg== 이러한 코드가 출력됩니다.

이것을 다시 base64 디코딩하면

<?php

echo "hi";

?>

라는 값이 나오게됩니다.

즉 이러한 php://filter 의 속성을 이용해서 flag.php의 소스코드를 확인해봅시다.

다시 25번 문제에 들어가서 주소창에

주소?pages=php://filter/convert.base64-encode/resource=flag 

를 적어봅시다.

여기서 .php를 적어주지 않는 이유는 뇌피셜이지만 아까 말하였지만 파일이름에 .php 가 붙는것으로 예상이 되기 때문입니다.

그렇다면 위의 사진처럼 base64 인코딩된 값이 화면에 출력되는데 이 값을 decode를 해서 소스코드를 확인해봅시다.

https://www.base64decode.org/

 

Base64 Decode and Encode - Online

Decode from Base64 or Encode to Base64 - Here, with our simple online tool.

www.base64decode.org

저는 위의 사이트에 가서 디코딩을 진행했습니다.

디코딩을 진행하면 이제 $flag 변수 안에 flag 가 있는것을 확인할 수 있습니다.

이제 저 값을 auth 창에 가서 인증해줍시다.

 

 

 

 

 

이번문제는 진짜 5일은 계속 보면서 풀었던것 같다.

LFI 라는 취약점을 잘 몰라서 이 방식을 사용하는지도 어떻게 쓰는지도 잘 몰랐지만 

이 문제를 풀려고 찾아본게 아니라 그냥 누워있다가 공부해야겠다고 생각해서 구글링 해봤는데 

어디서 많이 봤던 형식으로 진행이 되어서 진짜 얼떨결에 문제가 풀렸다.

모르는것도 새로 많이 알게 되었고 막 엄청 어려운 문제는 아니였지만 그래도

지금까지 문제를 풀면서 가장 성취감을 느꼈던 문제인것 같다.

 

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

webhacking.kr 54번 문제(old)  (0) 2019.10.18
webhacking.kr 53번 문제(old)  (3) 2019.10.18
webhacking.kr 7번 문제 (old)  (0) 2019.10.16
webhacking.kr 27번 문제(old)  (0) 2019.10.15
webhacking.kr 26번 문제(old)  (0) 2019.10.15