CTF & Wargame(WEB)

level 1 XSS Filtering Bypass

KWAKBUMJUN 2025. 4. 17. 01:56

저번 강의에서 풀었던 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