ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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
Designed by Tistory.