xss—labs通关(1-10)

本文详细介绍了XSS跨站脚本攻击的各种绕过技巧,从闭合原标签到利用input事件,再到URL编码和大小写绕过,层层深入,展示了XSS攻防战中的策略与方法。通过实例演示了如何在不同过滤机制下构造有效payload,成功触发弹窗,对于理解XSS防护和渗透测试具有重要参考价值。
摘要由CSDN通过智能技术生成

目录

level1(正常)

level2 (闭合原标签)

 level3(使用input标签的特殊事件触发弹窗)

 level4(同3)

level5 (构造a标签)

 level6(大小写绕过)

 level7(双写)

level8(url编码)

 level9(校验http://)

 level10(hidden-->button)


level1(正常)

首先在页面发现存在参数回显在页面上右键查看页面源代码

 猜测将name参数值传递给了服务端,接下来我们用一个简单的poc来试试,将name的参数值修改为:<script>alert(1)</script>,然后刷新页面

发现我们插入的js代码被顺利执行了

level2 (闭合原标签)

这关虽然在页面多了个输入框,但请求方式还是get型,我们先同第一关试试一个简单的js语句:<script>alert(1)</script> ,然后点击搜索

 发现失败了,即我们写入的js代码没有被顺利执行,此时我们查看一下页面源代码

发现我们写入的name值出现在了两个地方,其中出现在<h2>标签之间的内容中的"<"和">"被实体化了,猜测此处使用了htmlspecialchar()函数 ,所以我们此时可以从value值入手,我们需要先将原标签闭合:"><script>alert(1)</script> //

其中//表示注释后面的内容

 level3(使用input标签的特殊事件触发弹窗)

同样我们先输入<script>alert(1)</script>试试,结果自然没有成功

 我们再查看源代码

发现<h2>标签之间和value值的内容中的特殊符号都被实体化了,此时我们就不能自己建一个标签了,我们可以利用input标签的一些特殊事件 来执行js代码:我们可以输入:' οnclick=alert(1) '

此处注意我们需要将必要的单引号进行闭合,点击搜索后页面没有弹窗,因为onclick事件需要我们鼠标点击输入框才会执行onclick的事件

 level4(同3)

同样我们先输入<script>alert(1)</script>试试,结果自然没有成功,然后查看页面源代码

发现<h2>标签间的内容被实体化了,value值中将"<"和">"删掉了,所以我们同第三题使用input标签的一些特殊事件(注意闭合):" οnclick=alert(1) " ,操作也同上,发现成功弹窗

level5 (构造a标签)

同样我们先输入<script>alert(1)</script>试试,结果自然没有成功,然后查看页面源代码

发现<h2>标签之间的内容还是被实体化了,value中的r和i之间被插入了_,影响了js代码,然后我们试试onclick事件,发现还是失败了,再次查看页面源代码

 

发现o和n之间也被插入了_,此时需要换一个思路,由于value中的<和>没有没过滤,我们可以依此来构造新标签:"> <a href=javascript:alert(1)>xss</a> //,此处会产生一个名为xss的超链接,点击可以成功弹窗

 

 level6(大小写绕过)

同样我们先输入<script>alert(1)</script>试试,结果自然没有成功,然后查看页面源代码

 

发现<h2>标签之间的内容还是被实体化了,value中的r和i之间被插入了_,影响了js代码,然后我们试试onclick事件,发现还是失败了,试试上一题的poc

发现href也被影响了,此时我们可以尝试大小写混合绕过,因为php严格区分大小写,二html不区分大小写:" Onclick=alert(1) ",点击输入框成功弹窗

 level7(双写)

同样我们先输入<script>alert(1)</script>试试,结果自然没有成功,然后查看页面源代码

我们发现script被过滤了 ,此时试试大小写绕过还是失败了,应该是后端将次数上传的参数全部抓换成小写了,我们可以试试双写:"> <sscriptcript>alert(1)</sscriptcript> //

 发现成功,此处后端可能只进行了一次过滤

level8(url编码)

同样我们先输入<script>alert(1)</script>试试,结果自然没有成功,然后查看页面源代码

经过一系列测试发现该过滤很严格,大小写也没有用,但我们观察到我们输入的参数会被作为url来使用,所以我们可以将我们的poc进行编码再输入来绕过过滤,对javascript:alert(1)进行url编码如下:&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41; 

输入然后点击添加友情链接,然后点击友情链接即可成功弹窗

 level9(校验http://)

同样我们先输入<script>alert(1)</script>试试,结果自然没有成功,然后查看页面源代码

此处看到回显说链接不合法,后端可能对我们上传的数据进行了校验,所以我们要在poc中加入一段标准的url如http://,然后需要将这段注释掉,最终poc为&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;//http://

 level10(hidden-->button)

同样我们先输入<script>alert(1)</script>试试,结果自然没有成功,然后查看页面源代码

此处我们需要换个思路,我们发现有一个隐藏的表单,我们设置poc:<script>alert(1)</script>&t_link=1&t_history=1&t_sort=1,刷新页面,查看源码

 

 发现t_sort存在回显,我们就设法对其进行操作,poc:<script>alert(1)</script>&t_sort=1" οnclick=alert(1) type="button

然后刷新页面,页面会出现一个名为1的按钮,点击它就可成功弹窗

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值