xss-labs通关大合集

本文详细介绍了xss-labs的各个关卡,从level1到level19,分析了每个关卡的漏洞原理和解决方法,包括反射型XSS、编码绕过、事件触发等技巧,通过实例展示了如何利用这些技巧通关。
摘要由CSDN通过智能技术生成

漏洞原理,看这里

xss-labs

文章所用的xss-labs靶场的项目地址:https://github.com/do0dl3/xss-labs

然后开始通关

在这里插入图片描述

level1

在这里插入图片描述
仔细观察三处箭头,可以发现它是向服务器提交了一个name参数,值为“test”,从页面

回显来看,将neme参数的值显示在了页面上,并且显示了name参数值的字符长度

接下来,查看源码
在这里插入图片描述
从这里我们可以看到它将name的参数值,插入到了<h2> </h2>标签之间

那么 就很明显,这一关主要就是考察反射型xss

但是由于不知道服务器端对于提交的敏感字符有没有过滤,所以这里直接在name参数

中赋值一个简单的弹窗来进行测试。

操作如下:

将name参数重新赋值:<script>alert('xss')</script>

在这里插入图片描述
我们可以看到用于js弹窗的代码顺利执行了

那么这段代码在网页中如何显示的 呢

在这里插入图片描述

可以看到服务器是将我们的恶意代码原封不动的返回了,浏览器才能成功弹窗

可以去看看服务器端的level1.php如何对参数操作的

在这里插入图片描述

从源码可以看出,箭头1将从服务器获得的name参数的值赋值给str变量,箭头二又将

str变量直接插入到<h2> </h2>标签之间

因此服务器并没有对name参数的值进行严格的管理,并且这个值还是用户可控的,所

以存在反射型xss漏洞

点击确定可以来到第二关

level2

在这里插入图片描述

从url入手开始看,依然是get方式传递参数,应该还是反射型xss

只不过这一关加入了“输入框”和“搜索

接下来查看网页源码

在这里插入图片描述

从源码来看,它的功能就是通过点击“搜索”按钮,将输入框内的内容以get方式提交给

服务器上的level2.php

经过服务器的动态处理之后又会将参数keyword的值插入到<h2> </h2>标签之中以及

添加到<input>标签中的value属性的值内。

尝试使用上一关的恶意语句操作进行弹窗

在这里插入图片描述

但是报错了

我们继续查看网页源码

在这里插入图片描述

可以看到在<h2> </h2>标签之中的恶意代码被编码了。

其中<>都被编码成了html字符实体。

猜测在服务器端用htmlspecialchars()函数对keyword参数的值进行了处理。

接着往下看可以看到插入到value参数值中的恶意代码并没有被编码而是直接原样返回

但是问题是这里的js代码在标签属性值中,浏览器是无法执行的。

既然上面的恶意代码被编码了,那么只能从属性值中的恶意代码处进行突破了。

要想浏览器执行这里的弹窗代码,只需要将属性的引号和标签先闭合就可以了。

将keyword的参数值重新赋值"><script>alert('xss')</script>//

在这里插入图片描述
左边的">去闭合原先的"
右边的//去注释原先的">

可以看到浏览器成功弹窗了,说明我们提交的恶意代码被浏览器执行了。

去服务器端看看level2.php代码

在这里插入图片描述
箭头1处将get方式传递到服务器端的keyword参数的值赋给str变量。

在箭头2处是用htmlspecialchars()函数对变量str进行处理之后显示到网页上。

在箭头3处却是直接将变量值插入到了<input>标签的value属性值中

因为这里并没有对敏感字符进行编码和过滤,所以可以通过构造实现XSS攻击。

level3

在这里插入图片描述在输入框输入“test” 进行尝试一下

看看网页源码

在这里插入图片描述
与第二关相似

但是还不确定有没有敏感字符过滤,编码等操作

构造弹窗测试一下

在这里插入图片描述

报错了

继续看看网页源码

在这里插入图片描述
这两处都将<>这样的敏感字符编码成了html字符实体。

猜测服务器端在这两处都用htmlspecialchars()函数进行了处理。

去服务器端看看level3.php代码

在这里插入图片描述
确认我们的猜测

这里可以通过<input>标签的一些特殊事件来执行js代码

构造代码:level3.php?keyword='onfocus=javascript:alert('xss') > //&submit=搜索

在这里插入图片描述
发现没有直接弹窗,这是因为onfocus事件的特殊性造成的

onfocus 事件在对象获得焦点时发生。

onfocus 通常用于 <input>, <select>, 和<a>.

最简单的实例就是网页上的一个输入框,当使用鼠标点击该输入框时输入框被选中可以

输入内容的时候就是该输入框获得焦点的时候,此时输入框就会触发onfocus事件.因此

点击当前页面的输入框就可以完成弹框了。

在这里插入图片描述

level4

在这里插入图片描述
这一关很明显还是用的get方式请求参数

并且该参数值在页面上有两处显示

上弹窗代码测试一下

在这里插入图片描述

输入框中与我们提交的参数值有出入,<>没有了

看看网页源码

在这里插入图片描述
箭头1处直接将<>编码转换了

箭头2处却是把<>删除了

但是,事件触发却不需要使用这两个符号。

用上一关的代码:level4.php?keyword="onfocus=javascript:alert('xss')"

在点击输入框之后成功触发了事件进行弹窗。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值