소학회/워게임

[web]Dreamhack_csrf-1

haerim9.9 2025. 2. 4. 17:34

문제 설명

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

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

 


 

*참고 사항 : 이번 문제는 Dreamhack 학습의 Web Hacking의 Cross-site Request Forgery (CSRF) 파트를 읽으면서 풀었다.

 

코드 분석

vuln : 이용자가 전달한 param 값 출력. XSS 공격 방지를 위해 키워드가(frame, script, on) 필터링 되어있다.

memo : 이용자가 전달한 memo 값 기록, render_template 통해 출력한다.

flag : GET - 입력받는 페이지 제공 / POST - check_csrf 함수 호출, check_csrf 함수는 read_url 함수 호출.

admin/notice_flag : 로컬호스트(127.0.0.1)에서 접근, userid="admin" 조건을 충족해야 flag 값 획득 가능. IP 주소 조작은 불가능하다.

*로컬호스트 : 자기 자신의 컴퓨터

 

 

vuln 이용 -> frame, script, on은 필터링 됐지만 <>는 되지 않았으므로 CSRF 공격을 이용할 수 있다. 즉, img 태그를 이용해 풀 수 있다는 것.

<img src="/admin/notice_flag?userid=admin">

1. 로컬호스트에 위치하는 이용자가 /admin/notice_flag 페이지를 방문해야 하며

2. userid="admin"이란 조건을 충족해야 하니 

 

위와 같은 코드를 param에 넣어주면 된다.

 

그러면 플래그 값이 나온다.


 

개인 공부 목적으로 작성된 글이며, 틀린 정보나 해석이 있을 수 있음.

https://dreamhack.io/wargame/challenges/26/

 

csrf-1

여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다. CSRF 취약점을 이용해 플래그를 획득하세요. 문제 수정 내역 2023.07.18 css, html 제공 및 read_url() 코드 일부가 변경되었습니다. Referen

dreamhack.io

 

'소학회 > 워게임' 카테고리의 다른 글

[web]Dreamhack_simplesqli  (0) 2025.03.25
[web]Dreamhack_csrf-2  (0) 2025.02.04
[web]Dreamhack_xss-2  (0) 2025.01.28
[web]Dreamhack_xss-1  (0) 2025.01.28
[web]Dreamhack_session-basic  (0) 2025.01.21