ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Dreamhack - CSRF Advanced
    wargame/Dreamhack 2026. 1. 2. 08:31

    [LEVEL 1 - CSRF Advanced - web]

     

     

    문제 환경에 접속하면 위와 같은 웹페이지가 나온다.

     

     

     

     

    먼저 문제 파일 다운로드를 통해 얻은 app.py를 살펴보자.

     

     

     

     

    index()를 보아, admin으로 로그인하면 플래그값을 볼 수 있을 것이다.

    vuln()를 보아, 대소문자 우회를 막는 필터링까지 하고 있는 것을 알 수 있다. 하지만 img 태그에 대한 필터링은 없다.

    flag()를 보아, good이 나와야 한다.

    login()를 보아, 로그인에 성공하면 세션과 csrf 토큰이 주어질 것이다. 그런데 csrf 토큰이 일회성도 아니고, 어떻게 만들어지는지 쉽게 알 수 있다.

    change_password()를 보아, csrf 토큰값과 바꾸려는 비밀번호를 같이 넣으면 admin의 비밀번호를 바꿀 수 있다.

     

     

     

     

    앞서 login()에서 확인한 코드를 바탕으로 위와 같이 파이썬 코드를 짜고 test.py로 저장한다.

    이때 username은 admin으로 하고, remote_addr은 앞서 read_url()에서 확인한 서버의 로컬 ip 주소를 넣는다.

    이 test.py를 실행하면 csrf 토큰이 출력되는 것을 볼 수 있다.

     

     

     

     

    이제 flag 페이지로 이동 후, 비밀번호를 123으로(아무거나) 변경하기 위해 아래와 같이 img 태그로 작성하고 제출 버튼을 누른다.

    <img src="/change_password?pw=123&csrftoken=7505b9c72ab4aa94b1a4ed7b207b67fb">

     

     

     

     

    그러면 good이 뜬다.

     

     

     

     

    이제 login 페이지로 와서 username에 admin, password에 123을 입력 후 로그인 버튼을 누른다.

     

     

     

     

    admin으로 로그인에 성공했고, 플래그값을 확인할 수 있다.

     

     

     

     

    플래그를 획득했다!

     

    'wargame > Dreamhack' 카테고리의 다른 글

    Dreamhack - baby-union  (1) 2025.06.15
    Dreamhack - what-is-my-ip  (0) 2025.05.04
    Dreamhack - Type c-j  (2) 2025.05.04
    Dreamhack - out of money  (0) 2025.04.27
    Dreamhack - command-injection-chatgpt  (0) 2025.04.27
Designed by Tistory.