csrf-2

2026. 1. 11. 23:09·Dreamhack 워게임/Lv.1
반응형

문제 설명

여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다.

 

CSRF 취약점을 이용해 플래그를 획득하세요.


코드 분석

admin 계정 로그인 시 FLAG 획득

 

엔드 포인트: /vuln

  • param의 값을 입력받고 그대로 반환한다.
  • 이때 "frame", "script", "on"은 필터링되며 "*"으로 치환된다.

엔드 포인트: /flag

  • 무작위 세션 id생성 후 16진수 문자열로 변환
  • 세션 ID를 키로 사용하고, 'admin' 값을 session_storage에 저장

GET

: 이용자에게 URL을 입력받는 페이지 제공

POST

: param 파라미터 값을 가져온 뒤, session_id를 생성하고, 생성한 session_id를 키로 사용하여 admin값을 session_storage에 저장한다.

그 후 check_csrf()를 통해 session_id가 유효한지 확인하고 경고 메시지 반환

 

엔드 포인트: /login

GET

: 이용자에게 login.html 제공

POST

: username과 passwd 입력받고, pw와 비교한 후, 로그인 성공 시 index 페이지 리다이렉트하도록 응답객체(resp)를 생성.

나중에 사용자를 식별하는데 사용할 session_id를 생성하고 생성한 session_id로 session_storage에 사용자 이름을 저장한다.

세션을 설정하고 리다이렉트된 응답을 반환하여 사용자를 index 페이지로 리다이렉션 한다.

 

엔드포인트: /change_password

  • GET 요청을 통해 pw가져와 pw에 저장함
  • 브라우저에서 sessionid 가져오고 session_id에 저장

session_id를 사용해 로그인한 사용자 확인하고, session_id가 세션 저장소에 있지 않으면 'please login' 문구를 띄우고

'index.html'로 렌더링 해서 보여줌

 

users[username] = pw 세션을 통해 확인된 사용자의 비밀번호를 새로운 비밀번호로 변경


취약점 분석

/vuln 에서 이용자의 입력 값을 페이지에 출력한다.

frame, script, on 키워드는 필터링하기에 XSS 공격은 불가능하다.

다른 태그와 <,> 같은 키워드는 사용가능하기에 CSRF 공격이 가능하다.


익스플로잇

  • /flag 페이지에서 admin의 session_id가 저장
  • 공격 코드가 삽입된 /flag 페이지에서 admin의 pw를 변경하기 위해 /change_password 페이지를 접근
  • CSRF로 /flag 페이지를 방문하는 이용자가 /change_password 페이지로 요청을 전송하도록 공격코드 작성

CSRF 공격 코드 작성

/flag 페이지에서 이용자가 /change_password 를 통해 admin의 pw 값을 바꿔야 하기 때문에 아래와 같이 코드 작성

<img src="/change_password?pw=1234">

 로그인에 ID:admin / PW: 1234로 로그인하면 admin 계정으로 로그인 가능

 

반응형

'Dreamhack 워게임 > Lv.1' 카테고리의 다른 글

{"role": "admin"}  (0) 2026.01.21
simple_sqli  (1) 2026.01.15
csrf - 1  (0) 2026.01.11
session-basic  (0) 2026.01.09
XSS - 2  (0) 2026.01.01
'Dreamhack 워게임/Lv.1' 카테고리의 다른 글
  • {"role": "admin"}
  • simple_sqli
  • csrf - 1
  • session-basic
y3onbug5
y3onbug5
y3onbug5 님의 블로그 입니다.
  • y3onbug5
    y3onbug5 님의 블로그
    y3onbug5
  • 전체
    오늘
    어제
    • 분류 전체보기 (167) N
      • Alpacahack (19) N
      • Dreamhack 워게임 (49)
        • Lv.1 (40)
        • Lv.0 (4)
        • LV.2 (3)
        • LV.3 (2)
      • [Dreamhack] Web Beginner (3)
      • [Dreamhack] Web Hacking (17)
        • 웹 기초 지식 (4)
        • Cookie & Session (2)
        • Cross-Site Scripting(XSS) (1)
        • Cross-Site Request Forgery (1)
        • SQL Injection (4)
        • NoSQL Injection (2)
        • Command Injection (1)
        • File Vulnerability (1)
        • Server-Side Request Forgery (1)
      • [Dreamhack] Web Hacking Client-Side (10)
        • XSS Filtering Bypass (2)
        • Content Security Policy (CSP) (2)
        • CSRF,CORS Bypass (2)
        • Client-Side Template Injection (CSTI) (1)
        • CSS Injection (1)
        • Relative Path Overwrite (RPO) (1)
        • DOM Vulnerability (1)
      • [Dreamhack] Web Hacking Server-Side (15)
        • SQL Injection Advanced (4)
        • SQL Injection Advanced - Fingerprinting (2)
        • NoSQL Injection Advanced (3)
        • Command Injection Advanced - Web Servers (3)
        • File Vulnerability Advanced - Web Server (3)
      • [Dreamhack]Black-Box Penetration Testing (15)
        • DreamCommunity Penetration Testing (11)
      • [Dreamhack] LLM (2)
        • [Dreamhack] LLM과 프롬프트 엔지니어링 (2)
      • Web 공부 (4)
      • Web Study (15)
      • JavaScript (17)
        • 기초 (12)
        • 중급 (4)
      • 웹 개발(Flask) (0)
      • [Security First] web 기초교육 (1) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    DreamHack
    xss
    hacking
    web
    webstudy
    CSRF
    LLM
    JavaScript
    cve
    webhacking
    드림핵
    alpacahack
    JS
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
y3onbug5
csrf-2
상단으로

티스토리툴바