원본 링크 : https://dreamhack.io/wargame/challenges/28/
문제
여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스이다.
XSS 취약점을 이용해 플래그를 획득. 플래그는 flag.txt, FLAG 변수에 있다.
처음 페이지에 들어가게 되면 다음과 같은 화면을 볼 수 있었다.
vuln(xss) page 먼저 들어가보니 alert(1) 스크립트가 삽입되어 1이라는 내용의 alert을 확인할 수 있다.
memo에 들어가면 hello라는 문자를 볼 수 있다.
나갔다가 다시 들어오면 hello가 복제된다.
flag 페이지를 들어가니 입력폼이 보인다. 여기서 flag를 입력해야 하는 것같기도 하다.
첨부된 app 파일을 분석해본다.
저기의 flag.txt의 내용을 알아야한다.
urllib 라이브러리에 쓰이는 함수들은 어떻게 실행되는 걸까
urllib.parse.quote는 글자로 URL 인코딩을 해준다고 한다.
감이 안와서 사람들의 질문을 통해 힌트를 얻어보았다.
read_url에 집중해야한다고 한다. 아무래도 add_cookie가 신경쓰인다.
쿠키를 사용해서 flag를 알아내는건가 싶다.
document.cookie를 콘솔로 찍어내도 아무것도 안뜬다
어거지로 이렇게 넣어보았다
alert 창에 flag.txt 읽은 걸 띄울 순 없을까?
이렇게는 아닌가보다 ..
결국 구글링 찬스 .. ㅠㅠ
flag에서 memo페이지로 이동하여 flag 값이 있는 쿠키값을 출력하도록 해야하는 것이었다.
flag 페이지에서
<script>location.href="/memo?memo="+document.cookie;</script>
를 입력후 memo 페이지로 가면
이렇게 flag 값이 나오는 것을 확인할 수 있다.
넘 어렵다 8-8 이게 왜 레벨 1..?