소학회/워게임

[web]Dreamhack_csrf-2

haerim9.9 2025. 2. 4. 18:12

문제 설명

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

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

 


 

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

 

로그인해야 하는 문제, 이 문제도 admin 계정으로 로그인하면 될 것 같다.

 

 

코드 분석

vuln : csrf-1과 마찬가지로 xss 공격은 키워드로 필터링 해뒀다. 기능 역시 param을 출력하는 것으로 동일하다.

flag : GET - 입력받을 페이지 제공 / POST : session_id가 유효한지 check_csrf로 확인, check_csrf 함수는 read_url 함수 호출.

login : GET - username, password 입력받을 페이지 제공 / POST - password와 username이 정상적이면, 무작위 session_id를 생성하고 session_storage에 저장한다.

change_password : pw변수에 pw값 저장, session_id를 쿠키에서 가져와 저장. session_id가 저장소에 없으면 다른값 리턴, 있으면 users[username] = pw으로 비밀번호 변경

 

 

역시 csrf로 풀면 된다. 이미지 태그를 이용해보자.. 이번엔 csrf-1 문제와 다르게 change_password페이지를 이용하면 될 것 같아서 혼자 해봤다.

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

이 코드를 파라미터에 입력해서 admin 계정의 password를 바꾸도록 하면, admin 계정으로 로그인할 수 있을 것 같았다.

 

변경된 password로 login을 시도해본다.

 

그러면 정상적으로 로그인되고, 플래그 값이 나온다.

 

 


 

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

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

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

[reversing]Dreamhack_rev-basic-0  (0) 2025.03.31
[web]Dreamhack_simplesqli  (0) 2025.03.25
[web]Dreamhack_csrf-1  (0) 2025.02.04
[web]Dreamhack_xss-2  (0) 2025.01.28
[web]Dreamhack_xss-1  (0) 2025.01.28