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

일단, 문제에서 알아야 하는 건
1. 사용자가 입력한 URL을 봇(bot) 이 방문한다.
2. 봇은 flag.txt 내용을 FLAG 변수에 저장하고 있다.
3. 봇이 상대의 악성 스크립트를 실행하게 만들면, FLAG를 상대의 서버로 전송시킬 수 있다.
문제 사이트에 들어가 봄.

페이지 3개가 있음.
(1) vuln(xss) page 에 들어감

1을 hihi 이런식으로 바꿔보면

이렇게 script가 들어간 파라미터를 그대로 return하는 것을 확인 할 수 있다.
코드는 이거.

(2) memo 페이지에 들어가봄

hihi로 바꿔봄

memo 파라미터로 입력된 값을 전송하면 해당 변수가 페이지 내 삽입됨을 확인.
xss 페이지와 유사함
코드를 보면

memo_text에 입력되는 게 차례대로 출력되는 듯.
3) flag 페이지


암거나 입력해도 good 이라 뜸.
코드는 이거.


이 코드를 보면
read_url 함수가 실행되면
driver.get("http://127.0.0.1:8000/")
-> 먼저 로컬페이지를 연다
driver.add_cookie(cookie)
-> 전달한 쿠키를 브라우저에 추가한다. (쿠키의 domain이 127.0.0.1로 되어 있음)
driver.get(url)
-> 최종 공격할 사용자가 준 URL을 봇이 방문해서 페이지를 렌더링(자바스크립트 실행)함.
따라서
봇이 내가 준 URL을 방문하고, 그 때 브라우저에 특정 쿠키가 설정되어 있는 상태임.
-> 페이지에서 document.cookie나 JS 변수에 접근하면 탈취 가능하다는 거.

공격구문: xss=<script>window.open('http://127.0.0.1:8000/memo?memo='+document.cookie)</script>
=> 'http://127.0.0.1:8000/memo?memo={현재 로컬의 쿠키 값}' 페이지를 새 창으로 여는 스크립트 구문
=> memo 페이지에 FLAG가 삽입된 로컬의 쿠키 값 인자 값으로하여 작성하는 것으로 이해하면 된다고 함...
출처: https://mokpo.tistory.com/59 [MSS:티스토리]
flag페이지에
<script>window.open('http://127.0.0.1:8000/memo?memo='+document.cookie)</script>
를 입력하고

memo창에 들어가면

출력되어 있음
플래그값 나옴...
driver.add_cookie({"name":"flag","value":FLAG,"domain":"127.0.0.1"}) 때문에 플래그가 브라우저 쿠키에 들어 있음 → document.cookie로 읽을 수 있음.
window.open('http://127.0.0.1:8000/memo?memo='+document.cookie) 은 즉시 GET 요청을 만들어 서버에 플래그를 남김.
'워게임' 카테고리의 다른 글
| rev-basic-0 - 리버싱 추가 공부 (0) | 2026.01.11 |
|---|---|
| [드림핵] rev-basic-0 - 리버싱 (0) | 2026.01.11 |
| SQL 인젝션 추가 공부 (0) | 2025.11.04 |
| [드림핵] simple_sqli - web (0) | 2025.11.04 |
| XSS 취약점 문제 추가 공부 (0) | 2025.10.28 |