xss-labs level 1-10 攻略

level 1

在这里插入图片描述我们可以看到在payload中可以看到参数name,值为text,字符的长度为4,参数name的返回值会出现在界面上。
查看源代码
在这里插入图片描述我们可以看到,参数name插入到了标签< h2>< /h2>中,可以得出这是反射型XSS漏洞。
什么是反射型XSS?简单来说,就是当用户在网站的地址栏输入URL,从服务端获取到数据时,网站页面会根据返回的信息而呈现不同的返回页面,如果这个时候恶意用户在页面中输入的数据不经过验证且不经过超文本标记语言的编码就录入到脚本中,就会产生漏洞。
而且在源代码中我们还可以看到有一个关于窗口的语句,所以我们直接在name参数中赋值一个简单的弹窗来进行测试。即name=< script>alert(‘xss’)< /script>
在这里插入图片描述
我们可以看到js弹窗代码顺利执行了。这是因为服务器将我们的恶意代码原封不动的返回了,浏览器才能成功弹窗。(用view-source可以查看源码)
在这里插入图片描述
查看服务端的源码

在这里插入图片描述我们可以看到服务器中参数name的值赋值给了str变量,并且此变量直接插入到了标签< h2>< /h2>之间,对参数name的值没有进行严格管理,所以存在反射型xss漏洞。

level 2

在这里插入图片描述
我们可以看到payload中有参数keyword,在界面中增加了输入框和搜索,同样有返回keyword的值和长度,所以应该是反射型XSS漏洞。
查看源码
在这里插入图片描述
从源码可以看到通过点击搜索通过get方式将输入框中的内容提交给level2.php,并且有与窗口有关的语句
查看level2.php源码

在这里插入图片描述我们可以看到源码中将参数keyword的值插入了到了< h2>< /h2>标签中并且添加到了< input>标签中的value属性的值内。所以我们在输入框内输入恶意语句进行尝试。
在这里插入图片描述我们发现报错了,查看源码
在这里插入图片描述

我们可以看到在< h2>< /h2>中恶意代码被编码成了html字符实体,这是因为在服务器端用htmlspecialchars()函数对keyword参数的值进行了处理。但是在value参数值中的恶意代码没有被编码,所以我们可以考虑从此处入手。因这里的js代码是在标签属性中的,浏览器无法执行,所以我们只需要将属性的引号和标签先闭合就可以执行了。即keyword=">< script>alert(‘xss’)< /script>//(">是闭合原先的",//是为了注释掉原先的">)

在这里插入图片描述

level 3

在这里插入图片描述我们可以看到页面中只有一个输入框和搜索,payload长度也为0,我们输入‘111’进行测试
在这里插入图片描述我们可以看到当输入‘111’之后页面返回与level 2类似,尝试在输入框输入恶意代码
在这里插入图片描述报错了,查看源码
在这里插入图片描述我们可以看不仅在< h2>< /h2>标签中的恶意代码被编码了,在< input>中的value值也被编码了,所以可能在这两处都用htmlspecialchars()函数进行了处理。查看level3.php源码
在这里插入图片描述我们可以通过标签< input>的一些特殊时间来执行js代码。使用onfocus事件,该事件是在对象获得焦点时发生的,通常用于 < input>, < select>, 和< a>。即keyword='οnfοcus=javascript:alert(‘xss’) > //
在这里插入图片描述发现此时没有弹窗出现,这是由于onfocus事件的特殊性造成的。当我们输入内容的时候此时就是输入框获得焦点的时候,所以此时输入框就会触发onfocus事件,即只要点击当前页面的输入框就可以完成弹框 了。
在这里插入图片描述

level 4

在这里插入图片描述这一关看起来与前面两关都很相似,所以我们首先尝试在输入框中输入恶意代码
在这里插入图片描述报错了,我们可以看到输入框中的<>这两个符号没有了,查看源码
在这里插入图片描述我们可以看到标签< h2>< /h2>中的恶意代码被编码了,并且标签< input>中的value值的<>被删除了,查看level4.php的源代码
在这里插入图片描述我们可以看到在源代码中这两个步骤对<>这两个符号进行了替代。

我们可以通过事件触发进行弹窗,因为事件触发不需要<>这两个符号。keyword="οnfοcus=javascript:alert(‘xss’)>//
在这里插入图片描述同样通过点击输入框弹出弹窗
在这里插入图片描述

level 5

在这里插入图片描述继续常规操作,先测试!
在这里插入图片描述
一如既往地报错啊,看看源码有啥问题。

在这里插入图片描述我们可以看到标签< h2>< /h2>中的恶意代码被编码了,并且标签< input>中的value的值< scr_ipt>加了下划线。查看level5.php源码
在这里插入图片描述从源码中我们可以看到不仅将< script>替换成了< scr_ipt>,还将on替换成了o_n,所以也不能用onfocus事件这种方法。那么我们尝试用其它标签来执行js代码。
采用链接的形式,即keyword="> <a href=javascript:alert(‘xss’) > xss< /a> //
在这里插入图片描述这里就出现了名称为"xss"的链接形式。点击链接
在这里插入图片描述

level 6

在这里插入图片描述与之前一样,这里直接尝试恶意代码
在这里插入图片描述报错查看源码

在这里插入图片描述与上一关一样,我们查看一下level6.php源码有什么不一样的地方。
在这里插入图片描述这一关又增加了几个标签的替换,除了< script>、on以外又增加了src、data、herf在字符中间加入“_”,我们尝试一下能否通过大小写来进行绕过。即keyword=">< scRipt>alert(‘xss’)< /script>//
在这里插入图片描述ps:
1.src字符是在< img>标签中的在js中如果src属性的值不正常或者无法访问到时就可以触发一个onerror事件来执行js代码。例如name=<img src=111 οnerrοr=alert(‘xss’)>。
2.data字符类似于对字符进行编码的一种设定。如果在实际情况中javascript、script等关键字被过滤掉了之后,可以用如下语句进行尝试data:text/html;base64,PHNjcmlwdD5hbGVydCgieHNzIik8L3NjcmlwdD4=也可以达到同样的效果。与< script>alert(“xss”)</ script> 的作用是一样的。

level 7

在这里插入图片描述尝试恶意代码

在这里插入图片描述不出意外,报错了,我们看看源码。

在这里插入图片描述可以看到在标签< h2>< /h2>的恶意代码被编码了,并且标签< input>中的value的值中< script>< /script>中的script被删除了。查看一下level 7.php源码
在这里插入图片描述从源代码中,我们可以看到跟上一关不同的是,这一关将所有的字符都替换成空。
首先我们尝试一下可不可以通过大小写混写来进行绕过。
在这里插入图片描述我们可以看到< scRipt>在标签< h2>中变成了< script>,在< input>中的value的值仍然被替换成空了。接下来我们尝试用双写关键字试试看能不能绕过。即keyword="oonnfocus=javascript:alert(‘xss’)//
在这里插入图片描述在这里插入图片描述双写关键字成功绕过。

level 8

在这里插入图片描述
我们发现这个页面上还有一个链接点击链接
在这里插入图片描述发现什么都没有
我们输入111进行测试,查看源码
在这里插入图片描述我们可以看到在输入框输入的值直接提交到了链接中
输入恶意代码
在这里插入图片描述我们可以发现当提交到链接中时,< script>被替换成了< scr_ipt>,查看level9.php源码
在这里插入图片描述
我们可以看到跟之前一样对很多标签做了过滤,尝试大小写绕过。
在这里插入图片描述我们可以发现用来闭合引号的引号也被编码了,所以onfocus事件也不能使用。我们尝试对js代码进行编码来进行绕过。
在这里插入图片描述
keyword=& #106;& #97;& #118;& #97;& #115;& #99;& #114;& #105;& #112;& #116;& #58;& #97;& #108;& #101;& #114;& #116;& #40;& #39;& #120;& #115;& #115;& #39;& #41;
在这里插入图片描述
点击链接

在这里插入图片描述

level 9

在这里插入图片描述跟上一关类似,我们先测试一下,输入恶意代码,查看源码
在这里插入图片描述我们可以发现在链接的地方出现了:您的链接不合法字样,查看level9.php源码
在这里插入图片描述我们可以看到在过滤的同时,还增加了新的判断。需要输入包含正常的url地址才能够添加到href属性值中,所以我们需要构造一个有正常url地址的恶意代码。
keyword=< script>alert(‘xss’)< /script>http://www.baidu.com
在这里插入图片描述
我们可以看到已经成功地插入到链接中了,但是标签中的字符加了_,并且也将用来闭合引号的引号编码了。所以我们跟上一关一样将js代码进行编码。

在这里插入图片描述所以keyword=& #106;& #97;& #118;& #97;& #115;& #99;& #114;& #105;& #112;& #116;& #58;& #97;& #108;& #101;& #114;& #116;& #40;& #39;& #120;& #115;& #115;& #39;& #41;//http://www.baidu.com("//"是为了注释掉http://www.baidu.com)
在这里插入图片描述

在这里插入图片描述

level 10

在这里插入图片描述我们可以看到与之前几关不同的是 没有输入框了,直接在url上进行get传参,输入恶意代码。
在这里插入图片描述我们可以看到除了在标签< h2>的恶意代码被编码之外,还有隐藏的表单,我们可以尝试改变它的状态看看可以利用哪一个参数来进行绕过。
令keyword=t_link=" type=“text”&t_history=" type=“text”&t_sort=" type=“text”
在这里插入图片描述我们可以看到有一个表单的状态可以发生改变,那么就有一个 参数的value可以发生改变,查看源码找到是哪个参数
在这里插入图片描述

可以看到是参数t_sort,我们通过改变参数t_sort的值进行绕过。即keyword=< script>alert(“xss”)</ script>&t_sort=" type=“text” οnclick="alert(‘xss’)
在这里插入图片描述
在这里插入图片描述onclicke事件会在元素被点击时发生。
所以点击表单即可
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值