web靶场——xss-labs靶机平台的搭建和代码审计
目录
一、web靶场-xss-labs靶机平台的搭建
1、将下载好的压缩包放置php的WWW根目录下
2、配置网站
3、启动MYSQL和Nginx
4、完成后我们就可以在浏览器输入127.0.0.1:8088进入靶场
二、xss-labs靶场通关攻略
第一关:
1、输入代码进行测试:源代码
我们直接将参数插入标题试一试
第二关:
1、尝试插入代码
2、查看网页源码
3、查看源代码
4、绕过思路
方法一:input标签
方法二:使用onclick点击事件
第三关:
1、尝试插入代码
2、查看网页源码
3、查看源码
4、绕过思路
方法一:onmouseover事件
方法二:onclick函数
第四关:
1、输入代码进行测试:
2、查看页面源码
3、查看源码
4、绕过思路
方法一:onmouseover标签:
方法二:onfocus标签:
第五关:
1、输入代码进行测试:
2、查看网页源码
3、查看源码
4、绕过思路
第六关:
1、输入代码进行测试:
2、查看网页源码
3、查看源码
4、绕过思路
第七关:
1、输入代码进行测试:
2、查看网页源码
3、查看源码
4、绕过思路
第八关:
1、输入代码进行测试:
2、查看网页源码
3、查看源码:
4、绕过思路
方法一:
原理:
第九关:
1、输入代码进行测试
2、查看网页源码
3、查看源码
4、绕过思路
方法一:
方法二:
第十关:
1、输入代码进行测试
2、查看网页源码
3、查看源码
4、绕过思路
方法一:
方法二:
第十一关:
1、输入代码进行测试
2、查看网页源码:
3、查看源码
4、绕过思路
方法一:
方法二:
第十二关:
1、输入代码进行测试:
2、查看网页源码
3、查看源码
4、绕过思路,参考第十关
方法一:
方法二:
第十三关:
1、输入代码进行测试:
2、查看网页源码
3、查看源码
4、绕过思路
方法一:
方法二:
第十四关:
1、输入代码进行测试:
2、查看网页源码
3、查看源码
4、绕过思路
第十五关:
1、输入代码进行测试
2、查看网页源码
3、查看源码
4、绕过思路
方法一:
方法二:
第十六关:
1、输入代码进行测试:
2、查看网页源码
3、查看源码
4、绕过思路
方法一:
方法二:
第十七关:
1、输入代码进行测试:
2、查看网页源码
3、查看源码
:外部内容嵌入元素
4、绕过思路
方法一:
方法二:
第十八关:
1、输入代码进行测试:
2、查看网页源码
3、查看源码
4、绕过思路
第十九关:
1、不管了,直接查看源码
2、绕过思路
第二十关:
1、直接查看源代码
2、绕过思路
一、web靶场-xss-labs靶机平台的搭建
githhub下载连接:https://github.com/do0dl3/xss-labs
配置环境:
php小皮面板下载:小皮面板(phpstudy) - 让天下没有难配的服务器环境! (xp.cn)
具体配置教程:VScode的PHP远程调试模式Xdebug奈何@@的博客-CSDN博客
1、将下载好的压缩包放置php的WWW根目录下
2、配置网站
这里我为了区别其他配置环境,新建了一个网站,
注意:
-
端口号选择一个不被占用的端口
-
根目录:‘\phpstudy\phpstudy_pro\WWW\xss-labs-master’
-
最好使用5.xx本版
3、启动MYSQL和Nginx
4、完成后我们就可以在浏览器输入127.0.0.1:8088进入靶场
二、xss-labs靶场通关攻略
第一关:
1、输入代码进行测试:源代码
我们直接将参数插入标题试一试
通关成功!!!
过关总结: JS弹窗函数alert()
第二关:
可以看到这一关多了一个搜索框
1、尝试插入代码
我们尝试注入:
可见一些关键字可能被过滤了
2、查看网页源码
3、查看源代码
htmlspecialchars函数对实体化转义
4、绕过思路
构造闭合input标签,将导致
通关成功!!!
本关小结:可以插入标签(如标签的href属性)达到js执行的效果,前提是闭合号没失效
第六关:
我们先按前五关来测试一下
1、输入代码进行测试:
2、查看网页源码
可见这一关将href也给过滤了
3、查看源码
可见将script、on、src、data、href过滤了,也将所有字母转小写
4、绕过思路
其余关卡的执行代码测试之后也无法绕过
我们发现 、“ ”、‘ ’、script、href、javascript等都被过滤
这时我们换一个思路,我们尝试这一关的大小写是否被过滤
构造代码:
">alert(1)
通关成功!!!
本关小结:大小写法绕过str_replace()函数
第七关:
老规矩,把上一关的代码进行测试:
1、输入代码进行测试:
2、查看网页源码
可以发现,script直接变成了空值
3、查看源码
-
将所有字母转小写
-
过滤以下关键字:script、on、src、data、href
4、绕过思路
我们换个思路——双写来对应替换成空值这一注入绕过问题
例如:script,可以写成scscriptipt,当script被删掉的时候,就变成了script
注意这个加入的script不能分开,识别到后这个加入的script会被替换成空值,剩下的部分自动拼接,执行时空格会被自动忽略。
">alert(1)
通关成功!!!
关小结:双拼写绕过删除函数
第八关:
1、输入代码进行测试:
2、查看网页源码
输入任意字符,查看其输出路径:
可见在href下输出
尝试使用javascript注入:
javascript:alert(1)
发现javascript被过滤了
尝试大小写绕过:
发现大小写也被过滤:
3、查看源码:
-
将所有字母转换成小写
-
将单引号 ' ' 替换为实体字符双引号 " "
-
过滤以下关键字:script、on、src、data、href
4、绕过思路
尝试将javascript编写成urlcode代码进行绕过
javascript:alert(1) javascript%3Aalert%281%29
绕过失败,无法解析
方法一:
尝试利用利用href的隐藏属性自动Unicode解码,插入一段js伪协议尝试
原理:
编码顺序:urlcode html unicode javascript
因此,在使用html实体编码转义后javascript后,执行时首先将html 转换成javascript,从而绕过
javascript:alert(1)
可见应该javascript已经插入到href中:
通关成功!!!
本关小结: href属性自动解析Unicode编码
第九关:
1、输入代码进行测试
aaaa
连接不合法?那我们加上合法连接模式
2、查看网页源码
http://www.baidu.com JavaScript:Alert(1);
可见javascript被过滤了
3、查看源码
可以看到和上一关差不多:
-
将所有字母转换成小写
-
将单引号 ' ' 替换为实体字符双引号 " "
-
过滤以下关键字:script、on、src、data、href
但是其中加了一个if条件判断语句,如果传入的值中没有http://就会返回false
如果我们要想构造payload进行绕过,必须加入http://字符,但同时还要注释掉,否则无法触发
4、绕过思路
由于javascript被过滤了,我们尝试将script进行html编码,尝试绕过,同时将http://进行注释,从而构造payload进行绕过
方法一:
Javascript:Alert(1);//http://
没有报错
绕过成功!!!
方法二:
将http:// 放在alert(’ ‘)进行注释:
javascript:alert('http://'
绕过成功!!!
本关小结:将javascript进行编码绕过,同时将指定必须要的字符http://加入并且注释掉即可
第十关:
1、输入代码进行测试
这一关没有input,我们首先在浏览框输入代码进行测试
2、查看网页源码
可以看见这一关有三个隐藏表单
没办法,我们来查看以下源码吧
3、查看源码
可以看到:
-
将所有字母转换成小写
-
过滤tsort
-
过滤>转义成空
-
过滤转义成空
-
过滤转义成空
-
过滤
-
-
-
-
-
-
-
-
-