-
[Dreamhack Wargame] xss-2 문제풀이 / write up정보보안/CTF write-up 2022. 7. 28. 15:05
문제에 대한 정보를 확인합니다. XSS 취약점이 있다는 것을 확인할 수 있고, 입력받은 URL로 접속을 하는 봇이 있다는 것을 알 수 있습니다.
사이트에 접속하면 세 가지 페이지가 있어요. 각각의 페이지는 주어진 소스를 보면서 분석 해보겠습니다.
일단 소스를 살펴보면 xss-1 문제와 매우 유사합니다. xss-1 문제의 경우에는 flag 페이지에 들어가서 쿠키를 담은 script를 전송하면 memo에서 flag 값이 보이는 문제였습니다.
xss-1 문제와 나머지 소스 코드는 동일하나 한 가지만 달랐습니다.
# xss-2 문제 @app.route("/vuln") def vuln(): return render_template("vuln.html") # xss-1 문제 @app.route("/vuln") def vuln(): param = request.args.get("param", "") return param
xss-1은 파라미터 값을 flask에서 직접 받아서 반환한 반면에, xss-2 문제에서는 그냥 렌더링해서 넘겨줍니다.
<div id='vuln'></div> <script> var x=new URLSearchParams(location.search); document.getElementById('vuln').innerHTML = x.get('param'); </script>
그래서 파라미터 값을 어떻게 처리하는 지 확인해보니, 프로토타입으로 받아서 innerHTML로 데이터를 넣어주는 거였습니다.
그래서 스크립트가 아닌 단순 문자열은 다 출력이 되었습니다.
URLSearchParam에 XSS 취약점이 있는지 구글에 검색해보았습니다.
https://sg-choi.tistory.com/420
[Security] Reflected XSS
Reflected XSS? Parameter에 전달된 입력값이 필터링 없이 출력되어 스크립트가 실행되는 취약점을 Reflected XSS라고함 예시 코드 import React from 'react'; const App = () => { const imageUrl = new URLSear..
sg-choi.tistory.com
한 블로그에서 답을 얻을 수 있었습니다. onerror를 이용한 문제 해결 방법이었습니다.
태그에서 로딩에 실패하였을 때, onerror에 지정된 함수를 실행하게 되어있었습니다.
<img src=1 onerror="location.href='/memo?memo='+document.cookie">
위의 스크립트 문을 적어서 봇이 접속하도록 해보았습니다.
위와 같이 스크립트를 입력하고, 제출을 누르니, good이라는 alert 창이 나타났습니다.
그리고 memo 탭으로 들어가서 확인해보니 flag 값이 나왔습니다.
반응형'정보보안 > CTF write-up' 카테고리의 다른 글
[Dreamhack Wargame] session-basic 문제풀이 / write up (0) 2022.07.20 [Dreamhack Wargame] devtools-sources 문제풀이 / write-up (0) 2022.07.19 [webhacking.kr] old-01 문제 풀이 / write-up (0) 2022.07.19 [드림핵] shell_basic 풀이 / write up (0) 2022.02.19 [pwnable.kr] fd 문제 풀이 / write up / pwnable.kr 소개 (0) 2022.02.14