2019. 10. 16. 22:21ㆍWargame/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를 해서 소스코드를 확인해봅시다.
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 |