一、XSS盲打
什么是xss盲打?
盲打只是一种惯称的说法,就是不知道后台不知道有没有xss存在的情况下,不顾一切的输入xss代码在留言啊,feedback啊之类的地方,尽可能多的尝试xss的语句与语句的存在方式,就叫盲打。
“xss盲打”是指在攻击者对数据提交后展现的后台未知的情况下,网站采用了攻击者插入了带真实攻击功能的xss攻击代码(通常是使用script标签引入远程的js)的数据。当未知后台在展现时没有对这些提交的数据进行过滤,那么后台管理人员在操作时就会触发xss来实现攻击者预定好的“真实攻击功能”。
通俗讲就是见到输入框就输入提前准备的xss代码, 通常是使用script标签引入远程的js代码,当有后台人员审核提交数据时候,点击了提交的数据,触发获取到有价值信息 。
实验:
我们随便输入点东西:
我们再输入弹窗试试看又什么现象: 我们发现并没有我们想要的弹窗,那是不是预示着我们就失败了。答案是否定的。。。。
我们前面也提到了,盲打是将指令输入到后台,在管理员不知情的情况下触碰执行,我们模拟管理员登陆后台,看看后台的界面是否会把我们输入的内容输出:
点击提示,模拟下后台登陆,输入账号admin 密码123456
我们看到后台中招了:
二、XSS之过滤
1 XSS过滤的绕过2
3 脚本标签4
5 如果script被过滤的话,可以使用伪协议的方法:6
7 48
49
50 通过HTML编码绕过过滤(也可以使用十进制r,十六进制Ĕ)51
52 使用HTML编码,在进一步处理属性值的时候,浏览器会对其进行HTML解码:53
54
55
56 如果存在两次URL解码57
58 可以通过构造:59
60 %253cimg%20οnerrοr=alert(1)%20src=a%253e61
62 第一次URL解码以后:63
64 %3cimg οnerrοr=alert(1) src=a%3e65
66 第二次URL解码以后:67
68
69
70 字符集绕过71
72 UTF-7,US-ASCII,UTF-16(这种方法只有在浏览器支持所用的字符集才可以,或者你可以控制HTTPContent-Type消息头)73
74 使用js转义75
76 Unicode转义可以用于表示js关键词中的字符77
78
79
80 通过eval命令来动态构建字符串81
82
83
84 替代eval的方法85
86 ``
XSS饶过方法借鉴
xss绕过-过滤-转换方法:(方法借鉴里面有详细举例)
1.直接f12修改前端的限制,例如长度。
2.大小写混合:
3.拼凑:ipt>alert(11)
4.注释符:ipt>alert(11)ript>
5、编码的方式,但是在使用时要注意是否会被输出点识别和翻译,不然绕过了也没有用。
演示实验:
大小写绕过
img标签
三、xss之htmlspecialchars()函数
htmlspecialchars函数
1 htmlspecialchars(string,flags,character-set,double_encode)2 //可用的引号类型:
3 ENT_COMPAT -仅编码双引号(默认)。4 ENT_QUOTES -编码双引号和单引号。5 ENT_NOQUOTES -不编码任何引号。6
7 ps:$test = htmlspecialchars($name, ENT_QUOTES);
次函数是把预定义字符转换为HTML实体:
&(和号)--&
"(单引号)--"
‘(单引号)--'
>(大于)-->
htmlspecialchars()函数默认只编码双引号,当开发者未对单引号过滤时,就会可能导致XSS的发生
开始我们的实验:
我们先看一下后台的源码:我么很容易发现没有过滤单引号,那么漏洞来了。。。
输入 lili‘"<>& 提交,查看网页源码ctrl+g搜lili
可以看到没有对单引号做处理(这里可能就是用的默认的htmlspecialchars来做的后端过滤)
输入‘ οnclick=‘alert(999)‘
好了结束!
原文:https://www.cnblogs.com/li2019/p/12650537.html