通过观察发现这个用户信息可以修改
那么我们直接输入攻击代码
<script>alert(/wuhu/)script>
弹框如下:
发现一个输入框,输入攻击代码观察页面反应
页面将我们的攻击代码进行了打印。
查看网页源代码,发现将我们输入的尖括号进行了转义。
源码
htmlspecialchars(string): 把预定义的字符: “<” (小于)、 “>” (大于)、& 、‘’、“” 转换为HTML实体,防止浏览器将其作为HTML元素。
impossible级别的代码先判断name是否为空,不为空的话然后验证其token,来防范CSRF攻击。然后再用htmlspecialchars函数将name中的预定义字符 “<” (小于)和 “>” (大于)转换成html实体,这样就防止了填入标签。
预定义的字符如下:
& 成为 & " 成为 " ' 成为 ' < 成为 < > 成为 >
这里我们可以闭合该value参数,添加一个onclick属性
onclick
是一个 HTML 属性,用于在用户点击(或触摸)指定的 HTML 元素时触发相应的 JavaScript 代码。
那么我们可以构造其他攻击代码
" οnclick="alert(99)"
闭合input标签,将语句独立出来
"><script>alert(/xss/)script>
查看网页源代码,发现该闭合方式是单引号
构造我们的攻击代码
' onclick='alert(/wuhu/)
查看页面源代码
发现闭合方式是双引号闭合。
构造我们的攻击代码
" onclick="alert(/wuhu/)
注入我们的攻击代码
" οnclick="alert(/wuhu/)
页面没有反应
查看页面源代码
这里将我们输入的事件onclick的on之间添加了下划线。
试一下
页面没有任何反应,查看网页源代码,发现了三个隐藏的输入框参数分别为t_link,t_history,t_sort。
尝试给这三个参数赋值
发现只有t_sort有值
查看源代码
这里对左右尖括号进行了过滤
那么我们采用给t_sort赋值的方式注入攻击代码:
t_sort=" type="text" onclick = "alert(/xss/)
查看页面源代码,将之前隐藏的输入框显示出来,并且添加了一个数据鼠标点击事件。
然后点击输入框后弹框
和level10相似,直接查看网页源代码
分别给t_link,t_history和t_sort赋值
发现还是只有t_sort有值
按照上一关的思路进行构造攻击代码
t_sort=" type="text" onclick = "alert(/xss/)
页面还是没有反应,查看源代码
发现提交给t_sort的参数被过滤了。
查看源码,既然t_sort不行,这里尝试使用t_ref参数。
t_ref中的value参数获取的是 s t r 33 , str33, str33,str33变量获取的是 s t r 22 , str22, str22,str22变量获取的是 s t r 11 , str11, str11,str11变量获取的是HTTP_PEFERER参数。
修改Referer字段,在该字段构造我们的攻击代码
" type="text" onclick = "alert(/xss/)
点击输入框
弹框如下
查看源代码
发现这次传递的是USER_AGENT参数
修改USER_AGENT字段,在该字段构造我们的攻击代码
" type="button" onclick = "alert(/xss/)
点击页面中的按钮,弹框如下
查看源代码
发现这次传递的是COOKIE参数
修改COOKIE字段,在该字段构造我们的攻击代码
" type="button" onclick = "alert(/xss/)
点击页面中的输入框,弹框如下