본문 바로가기
Security/Web Hacking

[XSS Game] Level 4

by 단월໒꒱ 2022. 1. 14.

 

 

이번 문제도 단순히 스크립트를 삽입하여 자바스크립트 alert를 띄우라고 하고 있다.

 

 

 

 

주어진 것은 이렇게 생긴 화면과 Create timer를 누르면 타이머가 작동되는 기능이다.

 

 

 

 

아래에 타이머가 있어서 시간을 5초로 바꿔서 작동시켰더니 url 맨 끝에 ?timer=5가 붙는 걸 확인할 수 있었다.

 

이번에도 소스코드를 확인해보았는데 잘 모르겠어서 힌트를 참고해보았다.

 

 

 

 

힌트 1번에 startTimer 함수가 어떻게 호출되는지를 잘 봐보라고 하고 있다.

소스코드에서 startTimer가 사용되는 부분을 찾아보았다.

 

 

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

 

 

이 부분과 다른 부분을 보니 시간을 입력하는 창의 입력 값이 timer라는 id 값을 가지고 이를 onload에 가져와서 사용된다는 것을 알 수 있었다.

 

위의 코드를 참고하여 startTimer 함수를 닫아주고 뒤에 alert를 덧붙이면 될 것 같았다.

코드에 적당히 끼워맞춰 생각하니 입력해야할 부분이 ');alert('pop! 일 것이라 생각했다.

 

 

 

 

빈 칸에 숫자를 넣으면 url 파라미터로 ?timer=입력한수가 들어가길래 빈 칸에 ');alert('pop! 를 입력하고 Create timer를 눌렀다.

 

 

 

 

그랬더니 바로 팝업이 뜨며 성공했다는 것을 확인할 수 있다.

 

 

 

 

이렇게 시간을 넣는 곳에 내용을 입력함으로써 해결을 했는데 힌트 2번에 있었던 디코딩에 관련한 내용을 사용하지 않은 게 떠올라서 이번에는 url을 건드는 방법으로도 할 수 있지 않을까 시도해보았다.

 

 

 

 

방금 빈 칸에 넣었던 대로 url 끝에 붙여주었는데 실행이 되지 않았다.

 

 

 

 

그래서 이번에는 힌트 2번이 가르쳐준대로 디코딩을 해서 ;을 %3B로 바꿔서 입력했다.

 

 

 

 

팝업이 정상적으로 뜨며 문제를 해결할 수 있었다.

 

 

 

'Security > Web Hacking' 카테고리의 다른 글

[XSS Game] Level 6  (0) 2022.01.23
[XSS Game] Level 5  (0) 2022.01.23
[XSS Game] Level 3  (0) 2022.01.14
[XSS Game] Level 2  (0) 2022.01.09
[XSS Game] Level 1  (0) 2022.01.08

댓글