首先输入
<script>alert('xss')</script>
丝毫不差 没有出现回弹现象 根本就不出人意料好吧
接着来看一下源代码好吧
能够看得出来第一个输出点由于htmlspecialchars转义操作 所以上述代码根本行不通
这一关比上一关又多了一个隐藏表单 一共是有四个隐藏表单 从第四个隐藏表单的name 我们大概就可以推敲出他后台可能是将抓包工具中的referer参数直接插入到了value值处 我们可以利用这一个点来构造恶意代码
在这之前 我们可以测试一下如果不抓包 能不能直接看得出来哪一个表单能够直接回显输入的
<script>alert('xss')</script>&t_link=" type="text&t_history=" type="text&t_sort=" type="text&t_ref=" type="text
结果页面一个表单都没有回显出来太可恶了说明我们只能通过抓包工具burpsuite来进行网页的抓取
然后构造一个referer参数 因为发送到repeater的参数列表中没有referer参数 所以得自行构造
bp界面如下所示
然后将包给forward 记得proxy处要更新referer参数
放包点击表单后成功弹窗 嗨嗨!!
接着查看后台服务器代码
将提交的参数列表中的keyword参数赋值给str变量 然后将str变量通过htmlspecialchars()函数转义后直接插入到第一个输出点 将提交的参数列表中的referer参数赋值给str11 然后经历一系列的替换操作之后直接插入到name为t_ref的value属性值处 然后我们看到name为t_sort的表单中的value属性值处使用了htmlspecialchars()函数转义 所以无法将前面的value的双引号进行闭合操作 所以就算构造一个type="text"属性值也无法显示这个表单