-
Dreamhack - what-is-my-ipwargame/Dreamhack 2025. 5. 4. 23:43
[LEVEL 1 - what-is-my-ip - web]
문제 설명에 /flag에 플래그 값이 있다고 힌트가 주어졌다.
문제 환경에 접속하면 가장 먼저 위와 같이 나의 IP 주소를 보여준다.
문제 파일을 다운로드 받으면 위와 같은 app.py가 있다.
request.access_route에서 1번째 요소를 변수 user_ip에 저장하고 없으면 request.remote_addr를 저장한다.
그러면 request.access_route는 뭘까?
Flask에서 request.access_route는 "전달된 헤더가 있는 경우 이는 클라이언트 IP에서 마지막 프록시 서버까지의 모든 IP 주소 목록"이다.
아래 문서를 참고했다.
https://flask.palletsprojects.com/en/stable/api/
여기까지는 알겠는데 이 다음이 막혀서 해당 워게임 댓글을 보았더니 X-Forwarded-For 라는 헤더를 파싱해야 한다고 한다.
그러면 X-Forwarded-For는 뭘까?
아래 문서를 읽어보면, "XFF 헤더는 HTTP 프록시나 로드 밸런서를 통해 웹 서버에 접속하는 클라이언트의 원 IP 주소를 식별하는 사실상의 표준 헤더"라고 한다. 그리고 access_route에서 X-Forwarded-For 헤더를 파싱한다고 한다.
https://developer.mozilla.org/ko/docs/Web/HTTP/Reference/Headers/X-Forwarded-For
X-Forwarded-For - HTTP | MDN
X-Forwarded-For (XFF) 헤더는 HTTP 프록시나 로드 밸런서를 통해 웹 서버에 접속하는 클라이언트의 원 IP 주소를 식별하는 사실상의 표준 헤더다. 클라이언트와 서버 중간에서 트래픽이 프록시나 로드
developer.mozilla.org
앞서 살펴봤듯 request.access_route에서 클라이언트 IP 목록의 1번째 요소를 변수 user_ip에 저장하니까, 위와 같이 Burp Suite에서 X-Forwarded-For 헤더를 추가해 1; cat /flag를 넣으면 플래그값을 얻을 수 있을 것이다.
정상적으로 플래그값이 출력된 것을 볼 수 있다.
플래그를 획득했다!
'wargame > Dreamhack' 카테고리의 다른 글
Dreamhack - baby-union (1) 2025.06.15 Dreamhack - Type c-j (2) 2025.05.04 Dreamhack - out of money (0) 2025.04.27 Dreamhack - command-injection-chatgpt (0) 2025.04.27 Dreamhack - simple_sqli_chatgpt (0) 2025.04.21