저번 강의에서 풀었던 xss-1 문제와 거의 유사하지만 새로운 xss 필터링 기법이 적용되어 있다.
xss_filter 함수 분석
def xss_filter(text):
_filter = ["script", "on", "javascript:"]
for f in _filter:
if f in text.lower():
text = text.replace(f, "")
return text
script, on, javascript: 이 세개의 코드들을 하나씩 필터링하고 있는 것을 확인할 수 있다. 따라서 해당 키워드들을 우회해주면 쉽게 flag를 획득할 수 있을 것이다.
익스플로잇
xss_filter 함수를 확인해보면 script, on ,javascript: 이 세가지 키워드들을 하나씩 한번만 검사하고 있다. 그리고 키워드 세가지 중에 하나를 발견하면 해당 키워드를 아예 삭제해버리는 동작을 한다.
그렇다면 <scrscriptipt></scrscriptipt> 이렇게 script 태그를 작성하면 반복문이 돌면서 script를 제거하여 <script></script> 태그를 서버에 보내줄 것이다. 이와 같은 방법을 payload를 작성하여 공격을 진행할 것이다.
<scrscriptipt>document["locatio" + "n"].href="/memo?memo=" + document.cookie;</scrscriptipt>
document["locatio" + "n"]을 해준 이유는 on 키워드도 필터링하고 있기 때문이다. location.href는 document 속성으로부터 접근가능하다.

위에서 작성한 payload를 삽입해주면 이렇게 성공적으로 flag를 획득한 것을 확인할 수 있다.
'CTF & Wargame(WEB)' 카테고리의 다른 글
| level 2 CSP Bypass (0) | 2025.04.18 |
|---|---|
| XSS Filtering Bypass Advanced level 3 (0) | 2025.04.18 |
| Command Injection Advanced level 1 (0) | 2025.04.16 |
| My Best Friend level 1 (0) | 2025.04.16 |
| session beginner (0) | 2025.04.14 |