pikachu漏洞练习平台使用笔记-XSS(存储型、DOM型、DOM-x、盲打、过滤、htmlspecialchars、herf输出、js输出)

XSS漏洞大同小异,都是想办法让自己的输入被浏览器解析成代码执行。

存储型

存储型XSS就是把恶意代码存储在服务器中,攻击持久,每个访问该页面的用户都会受到攻击。

这是一个留言板,对我们留言的内容没有做过滤,经过实验,输入的内容直接输出在页面中,那么我们直接输入payload即可。

<script>alert(111)</script>

 提交后,我们也可以发现,刷新页面代码被执行,页面不会显示我们输入的字符,审查元素可以发现,我们的输入已经被当作js代码执行。

pikachu漏洞练习平台使用笔记-XSS(存储型、DOM型、DOM-x、盲打、过滤、htmlspecialchars、herf输出、js输出)

 DOM型

首先应该了解一下什么是DOM型XSS

DOM它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。

在html中,我们可以通过JavaScript,我们可以重构整个HTML文档。比如添加、移除、改变或重排页面上的项目,说白了就是利用javascript操控html的标签、内容等等。

接下来我们来看一下这个漏洞,可以发现这有一个输入框,我们输入内容后,提交,会出现一个链接,而链接的地址就是我们输入的内容。

pikachu漏洞练习平台使用笔记-XSS(存储型、DOM型、DOM-x、盲打、过滤、htmlspecialchars、herf输出、js输出) 

 那么这个漏洞是如何形成的呢,观察源代码,可以看到,他把我们的输入通过js写入到了html中,那么我们只要针对<a href='"+str+"'>what do you see?</a>这段代码进行闭合操作就行。

pikachu漏洞练习平台使用笔记-XSS(存储型、DOM型、DOM-x、盲打、过滤、htmlspecialchars、herf输出、js输出)

下边是payload,通过这个,对上边js代码进行闭合。

'οnclick=alert(1)>

pikachu漏洞练习平台使用笔记-XSS(存储型、DOM型、DOM-x、盲打、过滤、htmlspecialchars、herf输出、js输出) DOM-X

这个跟上一个是一样的方法,闭合标签即可,payload也是一样的。

XSS盲打

直接输入payload,提交,登陆后台查看,可以发现弹框

pikachu漏洞练习平台使用笔记-XSS(存储型、DOM型、DOM-x、盲打、过滤、htmlspecialchars、herf输出、js输出)

审查元素,可以发现有一条记录是空白的,里边放的js代码已经被执行 

pikachu漏洞练习平台使用笔记-XSS(存储型、DOM型、DOM-x、盲打、过滤、htmlspecialchars、herf输出、js输出) 

XSS-过滤

我们直接输入payload会过滤掉,查看一下源代码,可以发现过滤了<script,那么知道了这个过滤方法,那么我们就恶意进行绕过,比如,改成大写。

pikachu漏洞练习平台使用笔记-XSS(存储型、DOM型、DOM-x、盲打、过滤、htmlspecialchars、herf输出、js输出)

<SCRIPT>alert(111)</SCRIPT>

实际上,网站可能会过滤很多东西,用的方法也很多,我们需要不断积累经验,通过输入简单字符,去判断他的过滤规则。

XSS-htmlspecialchars

首先了解一下什么是htmlspecialchars:

htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。

我们输入<script>,检查源代码,可以看到<>已经被转译

pikachu漏洞练习平台使用笔记-XSS(存储型、DOM型、DOM-x、盲打、过滤、htmlspecialchars、herf输出、js输出)

我们知道,htmlspecialchars默认不对'处理,那么我们就可以构造不包含<>等可以被处理的payload。例如

' οnclick=alert(111)>'

pikachu漏洞练习平台使用笔记-XSS(存储型、DOM型、DOM-x、盲打、过滤、htmlspecialchars、herf输出、js输出)

 

XSS-herf输出

输入一些内容,我们发现他被写在了a标签里,关于a标签有一个特性:

输出在a标签的href属性里面,可以使用javascript协议来执行js,那么根据这个来构造payload

javascript:alert(111)

pikachu漏洞练习平台使用笔记-XSS(存储型、DOM型、DOM-x、盲打、过滤、htmlspecialchars、herf输出、js输出)

那我们既然知道了这个,那么,其实上边同样是是输出到herf的内容,我们也可以¥用这个方法构造payload

XSS-js输出

输入tmac,观察源代码,发现我们的输入被放在了js中,那么我们可以直接通过闭合$ms='tmac';来构造payload

pikachu漏洞练习平台使用笔记-XSS(存储型、DOM型、DOM-x、盲打、过滤、htmlspecialchars、herf输出、js输出)

' ;alert(111) ;'

攻击成功

pikachu漏洞练习平台使用笔记-XSS(存储型、DOM型、DOM-x、盲打、过滤、htmlspecialchars、herf输出、js输出)