目录
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编码如下:javascript:alert(1)
输入然后点击添加友情链接,然后点击友情链接即可成功弹窗
level9(校验http://)
同样我们先输入<script>alert(1)</script>试试,结果自然没有成功,然后查看页面源代码
此处看到回显说链接不合法,后端可能对我们上传的数据进行了校验,所以我们要在poc中加入一段标准的url如http://,然后需要将这段注释掉,最终poc为javascript:alert(1)//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的按钮,点击它就可成功弹窗