-
[Wargame] - what-is-my-ip정보보안 2024. 10. 7. 02:38

문제 페이지이다. 페이지에서는 아무것도 건들여볼게 없으니 바로 소스코드를 분석해보자.
@app.route('/') def flag(): user_ip = request.access_route[0] if request.access_route else request.remote_addr try: result = run( ["/bin/bash", "-c", f"echo {user_ip}"], capture_output=True, text=True, timeout=3, ) return render_template("ip.html", result=result.stdout) except TimeoutExpired: return render_template("ip.html", result="Timeout!")사용자의 ip는 request.access_route, request.remote_addr에서 가져온다고 하는데, request.access_route가 뭔지 찾아보니 아래이미지와 같다고 한다.

위 코드에선 X-Forwarded-For 라는 값을 받아와서 이를 ip로 삼기에 우리는 반대로 X-Forwarded-For를 헤더에 담아 FLAG 값은 flag라는 파일에 있기 때문에 1; cat /flag 를 추가해 요청보내면 되는 문제다. 그럼 최종적인 식은 "echo 1; cat /flag"가 된다.
POSTMAN으로 한번 request를 찍어보자.

그럼 아래와 같이 성공적으로 FLAG 값을 볼 수 있다.

'정보보안' 카테고리의 다른 글
Lab: DOM XSS in document.write sink using source location.search (0) 2025.04.12 [Wargame] - CSRF Advanced (0) 2024.10.09 [Wargame] - cookie (0) 2024.10.08 [Wargame] - xss-1 (0) 2024.10.07 [Wargame] - phpreg (0) 2024.10.04