티스토리 뷰

Can You Hit ME ?


아래 그림을 보면 알 수 있듯이 XSS 공격을 하면 된다.


xss 파라미터를 통해서 기본적인 스크립트를 삽입해보면 아래와 같이 표시된다.

xss=<script>alert('xss');</script>


<. >, script가 _ 로 변경된 것을 볼 수 있다. (:, java, document도 변경된다.)

on, eval의 경우 입력하면 값이 사라지는데 이 점을 이용해서 script와 같이 변경되는 문자 사이에 삽입하면 script글자가 변경되는 것을 우회할 수 있다.

scronipt >>> script (대소문자를 변경해서도 가능)

하지만, <, >가 _로 변경되는 것은 위 방법으로 해결할 수가 없다.


소스 코드를 보면 js.js 라는 파일에 의해서 필터링이 되는 것을 알 수 있다.


너무 길어서 파일로 첨부

js.js



여기서부터는 아래 두 내용 참조

https://sites.google.com/site/bughunteruniversity/nonvuln/angularjs-expression-sandbox-bypass

http://blog.portswigger.net/2016/01/xss-without-html-client-side-template.html


내용을 읽어보면 {{'a'.constructor.prototype.charAt=[].join;$eval('x=1} } };alert(1)//');}} 를 이용해서 우회한 것을 알 수 있다.

(자세한 내용은 나중에 시간나면 추가)


해당 값을 그대로 사용해보면 일부 문자가 막혀서 사용이 안 되는 것을 알 수 있다.

{{'a'.constructor.prototype.charAt=[].join;$eval('x=1} } };alert(1)//');}}

>>>

{{'a'.coonnstructor.prototype.charAt=[].join;$evevalal('x=1} } };alonert(1)//');}}


XSS 시도



해당 스크립트를 메일로 전송하면 flag 값을 알려준다.


Flag: SSCTF{4c138226180306f21ceb7e7ed1158f08}

댓글
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
링크
공지사항
Total
Today
Yesterday