从论坛找到的一个XSS练习源码:
于是开始攻关之路,每攻关一次就更新一下:
第一关:
最简单的直接输入一个<input>标签就直接被执行了,说明完全没有过滤标签。
然后看看源码,看看需要怎样才能通关。
那就是直接调用windows.alert()这个函数就可以通关。
简单明了。
192.168.23.248:93/level1.php?name=<script>window.alert()</script>
好了通关第一关。很简单,来看看第二关。
第二关:
先看看源码
有个地方用了htmlspecialchars函数处理,那我们直接从input里下手
在搜索的地方输入"οnclick="window.alert(),然后再点击搜索框
通关。
第三关:
源码:
两个地方都加了htmlspecialchars函数处理,但是htmlspecialchars默认配置是不过滤单引号的。只有设置了:quotestyle 选项为ENT_QUOTES才会过滤单引号
所以搜索框输入'οnclick='window.alert(),搜索后再点击搜索框。
成功通关
第四关:
源码:
input标签过滤的<>符号,但是在通关第三关时候我并没有用<script>所以直接用第三关的方法
不过单引号要换成双引号,搜索框输入"οnclick="window.alert(),搜索后再点击搜索框
轻松过关。
第五关:
源码:
过滤了<script>和on就是说之前我用的事件触发就不能再用了。
所以我现在尝试嵌入一个连接,在连接的时候调用alert
"><a href="javascript:alert('xss')">test</a>//
成功过关。
第六关:
源码:
源码可以发现过滤更多的关键字,但是跟第五关相比,少了个strtolower函数,即把输入的大写转换成小写。。所以这里直接用大写可以成功绕过。
"Onclick="window.alert()
成功过关。
第七关:
源码:
把我们标签里的关键字改为小写,然后script,hreff这些关键字直接替换为空。最简单的的办法是直接双写就可以了
"><a hrHREFef="javasSCRIPTcript:alert('xss')">123</a>//
成功通关。
第八关:
源码:
这个就有点难了。过滤了很多关键字。现在只能尝试在友情链接那里下手,但是关键字被过滤了怎么办,可以用浏览器编码
javascript:alert(1)
成功通关。
第九关:
源码
增加了检验是否含有http://这个关键字,我们尝试在注释的时候加上
javascript:%0dhttp://www.dsdd.com%0dalert(1)
成功通关。
第十关:
源码:
把这个变成text类型,因为要get两个参数所以要用&
123&t_sort="type="text" οnclick="alert(1)
成功通关
第十一关
源码:
可以看出来t_sort的值来自 上一个连接跳转的地址。
所以我们直接抓包把referer里绕过
我直接用findder改了
在第十关的提交的时候F11暂停然后findder修改数据包
23&t_sort="type="text" οnclick="alert(1)
成功过关
第十二关
源码
看了源码跟11关差不多,只是数据来源换为user-agent了,那还是抓包改一下就ok了
轻松过关。
第十三关
源码:
数据来源cookie的user字段。。那我们抓包修改user就可以绕过了
成功过关。
第十四关
好像要做xss的图片,这个不会。
第十五关:
源码:
ng-include文件包含,那么我就可以尝试让他包含某个可以执行xss漏洞的文件,然后让这个文件调用alert方法就可以了。
最简单的额直接用第一关的例子
‘level1.php?name=123<img src=111 οnerrοr=alert(1)>’
成功通关
第16关
源码
把script 空格 /都转义了。
那么空格就可以用%0d代替
test<img%0dsrc=1%0dοnerrοr=alert(1)>
成功通关
第十七关
源码:
直接在后面加个触发事件
οnclick=alert(1)
成功通关
第十八关
源码
没看出源码和17关有什么不一样,
输入17关的通关答案,成功通关
οnclick=alert(1)
十九关是单引号,我在研究研究