XSS game 4번

2023. 1. 13. 00:37Web_hacking/XSS-game

지정하는 시간별로 타이머가 돌아가는 웹 사이트 임을 확인할 수가 있다.

 

timer 부분에 소스코드를 보면

<img src="/static/loading.gif" onload="startTimer('{{ timer }}');" /> 형식으로 되어 있음을 볼수가 있다.

 

 

<img src="/static/loading.gif" onload="startTimer('{{ timer }}');" />

 

먼저 사이트를 돌려보도록 하자.

 

우측 상단을 보면 겉으로 들어나는 GET 방식으로 timer 값을 받아내는 것을 확인할 수가 있다.

 

위에서 말한 코드에 XSS 구문을 삼입하려면 위에 타이머 값을 이용해야 함을 볼 수 있다

<img src="/static/loading.gif" onload="startTimer('{{ timer }}');" />

형식에 맞추려면 alert('XSS Sucess') 구문을 넣는다 가정할때 위에 코드는 아래와 같이 변경되지 않을까?

<img src="/static/loading.gif" onload="startTimer('{{ timer }}');" />


--> <img src="/static/loading.gif" onload="startTimer('alert('Xss Sucss')');" />

 그렇다면 XSS 구문은 실행될수가 없다. 먼저 일단 사이트에 위와 같이 코드가 되는지 확인해볼 필요성이 있다.

 

역시 위와 같이 되는 것을 확인할 수 있다.

 

위에 형식대로 하면 XSS 구문이 실행할 수 없는 것은 확인이 되었다.

 

<img src="/static/loading.gif" onload="startTimer('{{ timer }}');" />

위에 형식대로 맞추려면 먼저 (' 와 ')를 해결해야 한다.  이게 있다면 XSS 구문은 실행할 수 없기 때문이다.

 

그렇다면 ?timer=3')alert('XSS Sucess 방식으로 입력하면 위와 같은 형식으로 ()()가 닫혀 XSS 구문을 성공시킬 수 있지 않을까? 생각할 수 있다.

하지만 실패했다.  다시 곰곰히 생각해보자.

 

-아뿔싸! XSS구문을 실행시키려면 우선 세미콜론이 필요하다는 것을 까먹고 있었다. 그렇다면

 

?timer=3');alert('XSS sucess 를 삼입하면 되지 않을까?

 

하지만 실행이 되지 않았으며 보면 ; 세미콜론이 필터링 되고 있지 않을까 ? 생각을 하게 됬다.

 

;뒤에 구문 모두 사라졌기 때문이다. 또 다른 이유로는 들어간 코드가

위와 같이 뒷 부분 전부 삭제된 것을 볼 수 있기 때문이다.

 

 

그렇기에 ;를 url 인코딩한 값인 %3B 를 이용하면 되지 않을까?

 

야호! 성공한 것을 확인할 수 있다.

 

위와 같이 구문을 삼입 한다면

 

<img src="/static/loading.gif" onload="startTimer('{{ timer }}');" />


--> <img src="/static/loading.gif" onload="startTimer('3');alert('Xss Sucess')" />

구문으로 작성되어 인젝션이 되는 것이다!

 

XSS 게임은 풀수록 재밌는거 같다.

'Web_hacking > XSS-game' 카테고리의 다른 글

XSS game 5번  (0) 2023.02.01
XSS game 3번  (0) 2023.01.12
XSS-game 2번  (0) 2022.12.31
XSS-game 1번  (0) 2022.12.31