상세 컨텐츠

본문 제목

[XSS Challenges] Stage #9 풀이

[Tech] War Game/XSS Challenges

by tech-dailylife 2020. 6. 27. 22:50

본문

반응형

사이트 주소 : http://xss-quiz.int21h.jp 

 

 

9번 문제입니다.

 

[문제 접근]

우선 파악하기 위해 test라는 문구를 넣어 봅니다.

프록시 도구로 패킷을 살펴보겠습니다.

우선 Request 패킷은 p1과 charset 파라미터가 존재하며,

p1은 text타입 input 필드에서 입력값을 받아 넘기고 있고,

charset는 euc-jp 라는 캐릭터셋 인코딩을 지정하여 넘기고 있네요.

Request 패킷의 charset 파라미터의 뒷 부분에 XSS 기본 공격 구문을 넣어 보내보겠습니다.

Response 패킷을 보면 Content-Type이라는 헤더에 charset 부분에 해당 공격 구문이 들어가고 있네요.

그치만 <와 >가 각각 &lt;와 &gt;로 필터링되어 공격이 성공 되지는 않고 있습니다.

일단 뭔가 다른 수가 생각나지 않네요... Hint를 한 번 확인해 보겠습니다.

UTF-7 XSS 라고 힌트를 주네요.

UTF-7 캐릭터셋 인코딩으로 변환하는 방법을 사용해야 할 것 같습니다. 인코딩 우회 기법을 시도해보겠습니다.

일단 url인코딩 해주는 웹 사이트는 쉽게 찾을 수 있습니다. 구글에서 검색하시면 많이 나오는데 그 중 하나를 선택합니다.

 

 

 

[문제 정답]

정답 : p1=%2BACIAPgA8-script%2BAD4-alert%28document.domain%29%2BADW-%2Fscript%2BAD4APAAi-&charset=utf-7

프록시 도구에서 Request 패킷을 변조합니다.

p1 파라미터에 UTF-7로 인코딩한 공격 구문을 삽입하고, charset 파라미터를 UTF-7로 변조하여 전송합니다.

그 다음 Response 패킷을 보면, Content-Type의 charset이 utf-7로 나타나며, 아래 input 필드에 XSS 공격 구문이 올바르게 들어가서 실행이 될 것 같아 보이네요.

그치만 실제로 화면에는 팝업이 나타나지 않습니다..

그 이유는 사실 일부 브라우저에서만 utf-7을 활용한 XSS 공격이 성공되기 때문입니다.

Chrome 브라우저에서 했지만 되지 않아서, IE 브라우저로 똑같이 시도해봅니다.

팝업에 도메인 주소가 나타납니다. 정답!

 

Congratulations!! 다음 스테이지로 넘어가시죠~

참고로 다음으로 넘어가려 해도.. 넘어가지지를 않습니다.

프록시 도구로 패킷을 보면 같은 요청만 계속 반복적으로 가고 있어 다음으로 넘어가지 않는 것 같네요.

 

이 문제는 일단.. 해결 안하고 넘어가겠습니다. Rank에 등록하려면 해결해야할 것 같지만 일단은 그냥 연습 의도가 강하기 때문에 넘어갈께요. 프록시에서 다음 stage의 URL 주소를 알 수 있으니까 URL 강제접속으로 넘어가시죠..

 

 

이 문제는 utf-7 캐릭터셋 인코딩을 활용하여 일부 브라우저에서 XSS 공격을 성공시킬 수 있다는 것이 포인트입니다.

하나의 케이스로 알고 있으면 될 것 같네요.

반응형

'[Tech] War Game > XSS Challenges' 카테고리의 다른 글

[XSS Challenges] Stage #11 풀이  (1) 2020.07.03
[XSS Challenges] Stage #10 풀이  (0) 2020.07.03
[XSS Challenges] Stage #8 풀이  (0) 2020.06.27
[XSS Challenges] Stage #7 풀이  (0) 2020.06.27
[XSS Challenges] Stage #6 풀이  (0) 2020.06.26

관련글 더보기

댓글 영역