小工具知识网

当前位置: 首页 > 行业知识 > web靶场——xss-labs靶机平台的搭建和代码审计

行业知识

web靶场——xss-labs靶机平台的搭建和代码审计

2026-11-02 08:23:31 来源:互联网转载

目录

一、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

                    • 过滤>转义成空

                    • 过滤转义成空

                    • 过滤转义成空

                    • 过滤

上一篇:网线服务器怎么调试?

下一篇:如何在2.2.1版Aduino IDE中开发ESP32