pikachu漏洞练习平台使用笔记-XSS(存储型、DOM型、DOM-x、盲打、过滤、htmlspecialchars、herf输出、js输出)
XSS漏洞大同小异,都是想办法让自己的输入被浏览器解析成代码执行。
存储型
存储型XSS就是把恶意代码存储在服务器中,攻击持久,每个访问该页面的用户都会受到攻击。
这是一个留言板,对我们留言的内容没有做过滤,经过实验,输入的内容直接输出在页面中,那么我们直接输入payload即可。
<script>alert(111)</script>
提交后,我们也可以发现,刷新页面代码被执行,页面不会显示我们输入的字符,审查元素可以发现,我们的输入已经被当作js代码执行。
DOM型
首先应该了解一下什么是DOM型XSS
DOM它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。
在html中,我们可以通过JavaScript,我们可以重构整个HTML文档。比如添加、移除、改变或重排页面上的项目,说白了就是利用javascript操控html的标签、内容等等。
接下来我们来看一下这个漏洞,可以发现这有一个输入框,我们输入内容后,提交,会出现一个链接,而链接的地址就是我们输入的内容。
那么这个漏洞是如何形成的呢,观察源代码,可以看到,他把我们的输入通过js写入到了html中,那么我们只要针对<a href='"+str+"'>what do you see?</a>这段代码进行闭合操作就行。
下边是payload,通过这个,对上边js代码进行闭合。
'οnclick=alert(1)>
DOM-X
这个跟上一个是一样的方法,闭合标签即可,payload也是一样的。
XSS盲打
直接输入payload,提交,登陆后台查看,可以发现弹框
审查元素,可以发现有一条记录是空白的,里边放的js代码已经被执行
XSS-过滤
我们直接输入payload会过滤掉,查看一下源代码,可以发现过滤了<script,那么知道了这个过滤方法,那么我们就恶意进行绕过,比如,改成大写。
<SCRIPT>alert(111)</SCRIPT>
实际上,网站可能会过滤很多东西,用的方法也很多,我们需要不断积累经验,通过输入简单字符,去判断他的过滤规则。
XSS-htmlspecialchars
首先了解一下什么是htmlspecialchars:
htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。
我们输入<script>,检查源代码,可以看到<>已经被转译
我们知道,htmlspecialchars默认不对'处理,那么我们就可以构造不包含<>等可以被处理的payload。例如
' οnclick=alert(111)>'
XSS-herf输出
输入一些内容,我们发现他被写在了a标签里,关于a标签有一个特性:
输出在a标签的href属性里面,可以使用javascript协议来执行js,那么根据这个来构造payload
javascript:alert(111)
那我们既然知道了这个,那么,其实上边同样是是输出到herf的内容,我们也可以¥用这个方法构造payload
XSS-js输出
输入tmac,观察源代码,发现我们的输入被放在了js中,那么我们可以直接通过闭合$ms='tmac';来构造payload
' ;alert(111) ;'
攻击成功