前言
大家好,我是Leon-pi,可以叫我pipi,新人报道,是个菜鸟,由于个人也是在学习过程中,文章写的也不是面面俱到,尽善尽美,请见谅。
XSS 之盲打
场景:
一个留言板,只有后台才能看见前端存在的内容,从前端无法确定是否存在XSS漏洞,假设存在XSS漏洞,直接往里输入 XSS 代码,称为盲打。
不论3721!,直接往里面插入XSS代码,然后等待,可能会有惊喜!!
被动等待.....(当后台管理员登陆时就可能被攻击)
1 构造payload
<script>alert("attack!")</script>
复制
提交后,模拟管理员登录后台
2 模拟管理员登录后台
存在XSS漏洞,并且也是存储型XSS
XSS 之过滤
1 随便输入内容,然后输入特殊字符('"<>)
2 输入 payload
<script>alert("attack!")</script>
复制
什么也没发生,应该是过滤掉一些内容
3 尝试绕过
改动大小写
<SCRIPT>alert("attack!")</SCRIPT>
复制
img 中 onerror事件
<img src="x" onerror="alert('error!')">
复制
说明只是过滤了大小写,当然XSS绕过姿势不止一种,师傅们自行扩展
XSS 之htmlspecialchars
htmlspecialchars函数概览
调用该函数进行转换的字符如下
函数转换的类型
如果使用该函数对用户的输入进行处理,而保持默认转换类型可能会出现 XSS漏洞
(仅编码双引号)
1 输入 '"<>111
查看源码
'"<>111
从源代码可以看出,单引号未进行过滤,只是过滤了双引号
2 输入 payload
#' onclick='alert("aaa")
复制
XSS 之href输出
javascript 伪协议
语法
javascript:someScript;
someScript 是一个或多个使用 ; 分隔的 JavaScript 语句
复制
实例
<a href="javascript:alert('JavaScript Link!');">JavaScript Link</a>
复制
XSS href 输出
- 输出在 a 标签的 href 属性中,可以使用 JavaScript 协议来执行js
- 防御:只允许http,https,其次再进行 htmlspecialchars 处理
1 根据提示输入网址,查看源码
2 点击链接跳转至百度
2 使用 js协议 构造payload
javascript:alert("aaa")
复制
XSS之 js输出
1 输入aaa,查看源码
这里发现输入的内容被放入到了js中
2 构造payload
';alert("attack xss")</script>
复制
XSS 防范:输入做过滤,输出做转义
结语:
本人菜弟弟一个,大佬勿喷,谢谢