write-ups/websec.fr

websec.fr level06 write up

2017. 12. 11. 21:46



레드벨벳 조이


진짜 이 워게임 문제를 풀면서 점점 실력이 증진된다는 생각이 뚜렷하게 든다. 이 워게임을 만들어주셔서 정말 감사합니다. 


Challenge Analyse

문제를 보면 일단 cURL 라이브러리를 사용했다는 점에서부터 강하게 SSRF가 의심된다. 


사용자에게 URL을 입력받고 해당 URL에서 응답을 받은 buffer를 출력하는 웹 어플리케이션이다. 사용자 URL에서 gopher, dict 등 SSRF에서 유용하게 사용되는 URL scheme 들을 막고 있어서 힘들어보였다. 


Exploit 

 사실 localhost의 우회는 생각보다 쉽다. http://locⓐlhost/ 이렇게 하면 ⓐ가 a처럼 인식되기 때문에 쉽게 우회할 수 있다. 


이런 주석이 있어서 http://locⓐlhost/level06/flag.php 로 접근하면 되지 않을까 생각했지만, 뒤에 index.php를 붙이기 때문에 불가능했다. 하지만, 이것도 그냥 ? 로 우회하도록 하자.



띠용? 에바쎄바참치꽁치 ㄹㅇ루다가... 

뭐지... 왜 flag.php를 봤는데도 플래그를 안던져주는 것인가,,, 

하와와~,, 여고생쟝은 마음이 플래그를 얻고 싶은 것 이야요~♡



ctrl + u 로 소스를 봤는데도,, 흠,,, 뭐지,,, 진짜 이거밖에 없는거신가,,,


로컬이 아닌가보시다,,,



Nope. 을 피하기 위해서는 $_SERVER['REMOTE_ADDR'] 값을 ::1 로 만들어야 될 것 같다. 


http://0.0.0.0/level06/flag.php?

http://ⓛⓞⓒⓐⓛⓗⓞⓢⓣ/level06/flag.php?

http://127.0.0.1:80/level06/flag.php?


http://[::]:80/level06/flag.php? -> 안됨

http://[::1]:80/level06/flag.php?


WTF???




+) 2018년 2월 9일부터 이 문제를 다시 잡고 있는 중이다. 


file:// schema 를 깜빡하고 있었다. file:// 로 접속하면 php 소스가 그대로 노출되기 때문에 해당 스키마를 사용하면 될 것이라고 생각하고 있었지만, 


file:///etc/passwd? 를 입력해보았더니 정상적으로 파일이 읽어져오지 않는다. ㅠㅡㅠ 

로컬에서 소스와 똑같은 환경을 만들어 실험을 해보았는데 잘된다... 이건 뭘까,,ㅠ



어떤 외국인 분이 댓글로 flag.php 파일 절대 경로를 알려주셔서 문제를 풀었다. 근데 그걸 게싱으로 얻어내셨는지 아니면 /proc/self/cwd 같은 트릭을 이용해서 푸셨는지는 모르겠다. 어째뜬 풀엇음~~~ 근데 댓글 다시고 바로 지우셔서ㅋㅋㅋㅋ

'write-ups > websec.fr' 카테고리의 다른 글

websec.fr level25 write up  (0) 2018.07.03
websec.fr level28 write up  (1) 2018.06.28
websec.fr level14 solving  (0) 2018.03.24
websec.fr level15 write up  (0) 2018.03.21
websec.fr level17 write up  (0) 2017.12.11