CTF | wargame

nullcon17 / Web 1 (X-Forwarded-For, 클라이언트 IP변경)

nopdata 2017. 3. 10. 15:33
date : `17.02

Chris Martin wants to go home. Can you help him get there as soon as possible?

username과 password를 입력받는 창 하나가 뜬다. 다른 기능은 없고 오로지 로그인 기능만 있으며 주석에는 'MmI0YjAzN2ZkMWYzMDM3NWU1Y2Q4NzE0NDhiNWI5NWM='라는 문자열이 들어있다. 패딩값으로 보아 base64로 판단되어 디코딩을 하니 '2b4b037fd1f30375e5cd871448b5b95c'라는 문자열이 나왔다. 구글링을 해 보니 md5('coldplayparadise')였다.
여기서 coldplay와 어떠한 관련이 있지 않을까 하는 생각을 했었다.

로그인에 아무값이나 넣으면 다음과 같이 뜬다.

IP가 맞지 않는다는 의미 정도로 해석을 했었는데, 그렇다면 연결을 요청한 IP가 127.0.0.1이 되면 되지 않을까 라는 생각을 했었다. 하지만 방법을 몰라 풀지 못하고 있었는데 write up을 보니 X-Forwarded-For header값으로 주면 된다고 한다. XFF의 본래의 목적은 Client IP를 판별하기 위함인데, 여기서 Client IP가 프록시라면 실제 Client IP가 아닐 수 있다고 한다.
여기서 XFF값을 127.0.0.1로 주어, Client IP가 127.0.0.1이 되도록 해 주면 된다.

username과 password를 모르는데 이는 위에서 구한 coldplay에 paradise였다. 지문에서 나오는 Chris Martin은 coldplay그룹의 리더이며 그가 집에 가길 원한다고 하였으므로, 그의 그룹인 coldplay를 username으로 넣어주고 password로는 나머지 값인 password를 넣어 주어야 한다.


flag : flag{4f9361b0302d4c2f2eb1fc308587dfd6}