소학회/워게임

[web]Dreamhack_xss-1

haerim9.9 2025. 1. 28. 19:26

문제 설명

여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다.
XSS 취약점을 이용해 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다.

플래그 형식은 DH{...} 입니다.

 


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

 

코드 분석을 해보자.

/vuln : 이용자가 전달한 param 값을 출력

/memo : 이용자가 전달한 memo 값을 render_template 함수를 통해 기록하고 출력

/flag : GET - 이용자에게 URL 입력받는 페이지 제공 / POST - params에 값과 쿠키에 FLAG를 포함해 check_xss 함수를 호출, check_xss는 read_url 함수를 호출해 vuln에 접속

 

 

그러니까 /vuln에서 발생하는 XSS 취약점(전달한 param 값을 그대로 출력)을 이용해 이용자의 쿠키를 탈취할 수 있다. memo를 통해 기록이 되니까 memo를 이용해서 탈취한 쿠키를 확인하면 된다.

<script>location.href = "/memo?memo=" + document.cookie;</script>

 

해당 코드를 사이트의 flag에 들어가서 입력하면 된다.

<script> = 자바스크립트로 변조하기 위한 코드

/memo = memo경로

?memo = 이용자가 전달한 memo 값

location.href = 전체 URL을 반환하거나, URL을 업데이트할 수 있는 속성값

document.cookie = 쿠키값 읽기

 

 

입력하고 memo에 들어가면

flag 값이 뜬다.


 

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

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

 

xss-1

여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다. XSS 취약점을 이용해 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다. 플래그 형식은 DH{...} 입니다. 문제 수정 내역

dreamhack.io