我是啊锋,一个努力的学渣,作为一个刚进入安全大门的小白,我希望能把自己所学到的东西总结出来,分享到博客上,可以一起进步,一起交流,一起学习。
本节目录:
- 概述
- 反射型xss(get)
- 反射型xss(post)
- 存储型xss
- Dom型xss
- Dom型xss-s
- Xss盲打
- Xss之过滤
- Xss之htmlspecialchars
- Xss之href输出
- Xss之js输出
- 麦迪Tmac
前文:
概述
Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:1.反射性XSS;
2.存储型XSS;
3.DOM型XSS;
反射型xss(get)
随便输入带<>字符然后审看元素,没想到我们的输入被原封不动地输出到了 p 标签中
要构造完整的payload可是长度不够,只能修改一些maxlength长度了
构造的payload为
<script>alert("hack")</script>
反射型xss(post)
看到登录框没有头绪,点击一下提示–
登录后, 构造如下paylod,发现没有过滤
存储型xss
随便往输入框输入然后带上 <script>alert("hack")</script>
留言内容会被存储到数据库,然后输出到页面上
Dom型xss
随便输入看看内容会被怎么样处理
输入后审看元素以发现我们在输入框输入的数据会被直接拼接在<a>
标签所以只有闭合上a标签就能随意插入代码弹框
#' οnmοuseοver="alert(/xss/)">
即可实现弹框
Dom型xss-s
初步观察,随便输入<>sdasd点击 按钮 后会出现 what do you see? 的链接按钮,其指向是 当前目录/you_input 审查元素时发现onclick后会执行函数 domxss() ,其作用是读取input的值并将其拼接到新创建的link节点中 ,如下图可见,我刚输入的值已经拼接进去了,所以只要闭合a标签,即可弹框
仔细一看源码,还给出了答案
扫描二维码关注公众号,回复:
8538321 查看本文章
unction domxss(){
var str = window.location.search;
var txss = decodeURIComponent(str.split("text=")[1]);
var xss = txss.replace(/\+/g,' ');
// alert(xss);
document.getElementById("dom").innerHTML = "<a href='"+xss+"'>就让往事都随风,都随风吧</a>";
}
//试试:'><img src="#" onmouseover="alert('xss')">
//试试:' οnclick="alert('xss')">,闭合掉就行
Xss之盲打
老pyload测试,提交完后怎么搞??才发现还有个提示,点击提示
登录后台,看会发生啥?后台登录地址是/xssblind/admin_login.php
Xss之过滤
<SCRIPT>alert(‘hack’)</sCRIpt>
用大小写绕过即可
Xss之htmlspecialchars
htmlspecialchars()函数默认是不对单引号进行转义的,要想连单引号一起转义,需要给函数传入参数ENT_QUOTES。
> ENT_COMPAT - 默认。仅编码双引号。
> ENT_QUOTES - 编码双引号和单引号。
> ENT_NOQUOTES - 不编码任何引号。
tmlspecialchars()函数把预定义的字符转换为 HTML实体。
预定义的字符是:
& 转为
&
" 转为"
’ 转为'
< 转为<
>
转为>
输入payload,6666666有味道了,那就”<>’/script(
审查源代码发现 " ,>和<都经过了编码,剩下的字符没有,的确单引号依然可以使用,payload如下
' οnclick=alert(‘hack’) '
Xss之href输出
这题搞不懂,直接看看源码分析一下好了
构造payload如下
javascript:alert(hack)
提交后查看源码,我们的输入在 a 标签的 href属性中, 此时点击我们的标签就会出现弹窗
Xss之js
审查元素
那么,我们只需要考虑闭合,即可构造XSS,输入
Payload:'</script><script>alert(hack)</script>
,成功弹窗。
最后无论如何不要放弃心中所爱..其实,我和这个pikachu漏洞平台的作者一样,一样喜欢篮球,最后附上一张麦迪的图吧