xss—labs通关(1-10)

发布于:2022-11-15 ⋅ 阅读:(334) ⋅ 点赞:(0)

目录

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的按钮,点击它就可成功弹窗

 

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到