문제 설명
여러 기능과 입력받은 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을 시도해본다.
그러면 정상적으로 로그인되고, 플래그 값이 나온다.
개인 공부 목적으로 작성된 글이며, 틀린 정보나 해석이 있을 수 있음.
'소학회 > 워게임' 카테고리의 다른 글
[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 |