xsslabs下载:点击这里,提取码:lzan
安装方法:放在phpstudy的www目录下即可

level1
URL的test,与图片的test相对应,当改为1时,图片也会相应更改,可以通过这个地方形成跨站xss
写入xss语句<script>alert(1)</script>

level2
这里test与第一关一样更图片相对应,但插入xss没有弹窗

查看元素右键编辑发现插入的xss被转义了!

查看源代码造成转义的原因,发现这里用到了一个htmlspecialchars函数,关于函数的描述,大概的意思就是把<、>改成<,所以我们输入的xss就变成实体化了,执行起来就有问题。

回过头再看一眼元素,xss插入的地方不止一个地方回显,并且这里没有实体化
这里没有弹窗原因:前后双引号使xss语句变成了字符串,所以没有执行。
绕过方法:使用SQL注入的思路,">闭合,//注释后面内容(注不注释都可以,不影响操作)

level3
使用第二关思路:">闭合,没有弹窗,查看元素,发现第二处把我们闭合的>给实体化了导致语句没有执行成功

绕过方法:利用html输入框的属性(onclick 事件),来调用JS代码,这时就不需要用到>了
xss执行语句:' onclick='alert(1) +鼠标点击搜索框

关于为什么用单引号不用双引号解释:
因为查看元素时看着好像用的是双引号,但CTRL+u仔细看发现用的是单引号!
关于'alert()前面加个点的解释:
当不加点时查看元素,发现alert()'后面有个点,加点是为了闭合

level4
第四关跟第三关一样,只是换成双引号!

level5
继续操作,发现onclick被转义了

查看源代码,把on过滤成o_n了

绕过方法:既然不能用输入框鼠标事件了,那我们可以用另外标签(超链接)来实现
xss语句:"><a href="javascript:alert(1)">我真帅+点击我真帅

level6
这一关过滤了href
查看源代码,好家伙过滤这么多,也就是想用之前的方法来绕过都不可能了

绕过方法:过滤了这么多,但没有过滤大小写,即可用大小写绕过!
xss语句:"><a HrEf="javascript:alert(1)">我真帅

level7
这关发现我们有些输入的代码不见了

查看一手源代码,发现只要是像script、on、href等匹配上的都为空

绕过方法:这里涉及到文件上传思路,双写绕过,即有些有些检测只检测一次,我们只需要再写一次就可以绕过
xss语句:"><a hhrefref="javascrscriptipt:alert(1)">我真帅

level8
构造:<a href=+"javascript:alert(1),发现把script过滤成scr_ipt

查看源代码,这里把双引号过滤了,导致语句不能执行

绕过方法:进行Unicode编码
工具链接:提取码:lzan
把编码后的值放到搜索框,点击友情链接即可触发

level9
Unicode编码后放进去,说链接不合法!

查看源代码,发现添加了检测是否有http://(因为一般链接都有http)
在后面添加http://,发现友情链接点击不了

原因是http与JavaScript:alert(1)在一起有干扰,注释掉即可

level10
查看元素发现,第二回显点不见了(隐藏了!点击此处了解详情)

查看源代码,发现接受两数据,一个是keyword和t_sort,也就是我们可以通过t_sort来发数据
因为过滤了>、<,利用第三关的onclick来实现,但还是不能触发
这里需要加上type=“text”(详情),来显示搜索框
原因:由于hidden函数是隐藏属性不能在页面中触发xss,并且我们使用onclick需要搜索框来触发,所以添加type="text"让输入框在页面显示

level11
不废话了,直接看源代码,HTTP_REFERER检测来源(获取前一页面的URL地址,详情点击!),与前面不同这里接受的值是$_str11也就是Referer

burp构造发包

发现出现搜索框,点击触发!

level12
这一关与上一关一样,查看源代码,HTTP_USER_AGENT,获取浏览器信息,详情点击!

构造burp

点击触发!

剩下关卡实战上基本遇不上所以就不解答了!
本文详细介绍了XSS跨站脚本攻击的多个层级,从level1到level12,探讨了如何通过各种方法绕过过滤机制,包括利用htmlspecialchars函数、HTML属性、Unicode编码等手段执行XSS语句。每关的解决方案揭示了Web应用安全中的常见防御措施及绕过策略。

1781

被折叠的 条评论
为什么被折叠?



