XSS(跨站脚本)概述
Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:
1.反射性XSS;
2.存储型XSS;
3.DOM型XSS;
危害: 存储型>反射型>DOM型
1.反射型XSS(get)
随便输入, 输入 ‘ " <> 特殊字符都可以原封不动得输出 可以发现没有任何过滤,
只是限制了输入字符的长度,F12修改一下即可 因为一般 前端中得输入框 会做一个长度得限制, 我们将他修改为20000
<script> alert("你好,我是一个警告框!") ;</script> // 弹窗得语法
查看后台代码,发现 后台代码并没有对你输入得东西 做任何修改 只是原封不动得输出了
总结: 随便输入,可以发现没有任何过滤,只是限制了输入字符的长度,F12修改一下即可,
后台不会存储数据, 刷新后 不会弹窗!
输入kobe 会生成链接 http://192.168.50.100/pikachu/vul/xss/xss_reflected_get.php?message=kobe&submit=submit#
2.反射型XSS(post)
admin 123456 登陆成功后 显示
输入 kobe 会以post方式提交请求 http://192.168.50.100/pikachu/vul/xss/xsspost/xss_reflected_post.php#
这种情况下 无法将恶意代码 发送到后端
提前写好 html页面 发送给用户 和用户点击 就可以获取cookie值
3.存储型XSS
提交留言后刷新 会一直存储在留言板上 后台有数据 这就是 和反射型xss一个区别
‘ " <> ? 6666666 输入特殊字符 发现没有过滤
查看前端代码
我们输入 <script> alert("xss") </script> 会出现一个弹窗
我们查看后台代码
判断message是否存在 并且 message不为空
进行了转义 防止sql注入
插数据库的时候 做了对应的转义 防止数据库的注入 把massage 插入到表中 存下来 存到后台
将存储得留言 都显示出来
4.DOM型XSS
DOM学习链接: https://www.w3school.com.cn/htmldom/index.asp
你可以理解为DOM为一个一个访问html的标准编程接口
输入1111
初步观察,点击 click me! 后会出现 what do you see? 的链接按钮,
其指向是 当前目录/you_input 审查元素时发现onclick后会执行函数 domxss() ,其作用是读取input的值并将其拼接到新创建的link节点中,
查看代码
有一段script的代码 他获取了id=text的值 输出了 通过字符串拼接方式
构造闭合方式
"<a href=‘ "+str+" ‘> what do you see?</a>";
"<a href=‘ ‘ > what do you see?</a>"
"<a href=‘ #‘ onclick="alert(111)"> ‘ what do you see?</a>"
#‘ onclick="alert(111)">
实际会出现<a href=‘ #‘ 闭合
剩下 >‘what do you see? 显示到下方
点击 onclick="alert(111)"会出现弹窗 111
5.DOM型XSS-X
输入后显示
查看源代码,发现代码获取的是url的text 值
"<a href=‘ "+str+" ‘>就让往事都随风,都随风吧</a>"
"<a href=‘ ‘ > 就让往事都随风,都随风吧</a>"
"<a href=‘ #‘ onclick="alert(111)"> ‘ 就让往事都随风,都随风吧</a>"
#‘ onclick="alert(111)">
构造 #‘ onclick="alert(111)">
弹窗
6.XSS之盲打
7.XSS之过滤
8.xss之htmlspecialchars
9.xss之href输出
10xss之js输出
原文地址:https://www.cnblogs.com/xingyuner/p/12299217.html