Iriton's log
[Dreamhack] Lv.1 XSS Filtering Bypass 본문
제목만 봐도 XSS 문제인 걸 알 수 있다.
필터링이 존재하는데 이를 우회하는 것인가 보다.
app.py부터 살펴보자.
xss_filter 함수가 존재한다.
여기서는 script, on, javascript: 라는 문자열 세 개 중 하나라도 존재하면 공백으로 처리한다.
lower() 함수를 사용해서 입력된 문자열을 소문자로 변경하기 때문에 대문자로 작성하여 우회하는 방법도 먹히지 않는다.
보통은 XSS 필터링 우회할 때 아래와 같은 방법을 사용한다.
1. 대문자로 쓰기 (SCRIPT)
2. onerror 사용 (<img%20src=fake onerror="alert(1)">
3. javascript: ( <a href="javascript:alert(1)">alert!</a>)
근데 이 코드에서는 3가지 방법을 모두 막으려는 것이다.
코드를 자세히 보고 생각해 보면
_filter에서 해당하는 문자열이 있으면 그것만 공백으로 치환하고 다시 검토를 하지 않는다.
예를 들어 script가 공백 처리될 것을 미리 예상하여 script 문자 중 아무데나 script를 끼워 넣으면
중간에 삽입된 script만 공백처리 되고 다른 문자열인 on이랑 javascript:만 검토를 하기 때문에
새로운 script라는 단어가 생기면서 script 코드 실행이 가능해진다.
<sscriptcript>locatioonn.href="/memo?memo="+document.cookie;</sscriptcript>
/flag 에서 flag.html을 읽어와서 값을 cookie에 저장하기 때문에 해당 쿠키값을 /memo의 memo 값으로 넣어주면
메모 기능을 활용하여 flag를 띄울 수 있다.
'WebHacking > WarGame' 카테고리의 다른 글
[Webhacking.kr] Challenge 23 (0) | 2023.11.14 |
---|---|
[Dreamhack] Lv.1 csrf-2 (0) | 2023.11.13 |
[XSS game] Lv.5 : Breaking protocol (0) | 2023.11.07 |
[Dreamhack] Lv.1 xss-2 (0) | 2023.11.07 |
[Dreamhack] Lv.1 xss-1 (0) | 2023.11.07 |
Comments