Iriton's log

[Dreamhack] Lv.1 XSS Filtering Bypass 본문

WebHacking/WarGame

[Dreamhack] Lv.1 XSS Filtering Bypass

Iriton 2023. 11. 13. 20:36

제목만 봐도 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