白帽子讲web安全笔记-利用location.hash绕过长度限制_使用DVWA实现

location.hash是什么

Location 对象的 hash 属性用于设置或取得 URL 中的锚部分(包括 # 标记),语法如下

location.hash = anchor_name

假设当前页面的 URL 是:http://www.site.com/p-javascript_history.shtml#back
location.hash就是”#back”,注意包含#

因为url中的锚长度可以很长,并且不上送web服务器,所以就不会截断,攻击者就可以构造很长的恶意js代码。

如何利用location.hash进行xss攻击

以DVWA-1.9为例:
如果攻击者想要利用dvwa的反射型xss,他可以构造下面的链接,然后诱导用户点击,URL中的“alert(/long long javascript/)”将会得到执行。

http://localhost/vulnerabilities/xss_r/?name=</pre><script>eval(location.hash.substr(1))</script>#alert(/long long javascript/)

上面的代码的执行效果如下图
这里写图片描述

dvwa的存在xss的参数name被html的”pre”标签包含,所以在name参数后面跟一个结束这个标签。

如果dvwa对name做了长度限制,但是只要name能放进去下面的代码,就能突破长度限制。

</pre><script>eval(location.hash.substr(1))</script>

有没有谁知道怎么让上面的代码更短的方法?

猜你喜欢

转载自blog.csdn.net/leonard_wang/article/details/78862663