[web]Dreamhack_xss-1
문제 설명
여러 기능과 입력받은 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