盲注
1.盲注对应的是SQL注入,盲注页面没有回显
SQL注入是依靠页面有回显,例如:
- union select 联合查询注入
updatexml 报错注入
2.盲注类型:
-
1.布尔盲注
就是很明显的True和False,意思是它只会根据你输入的注入信息返回True或False,没有明显的报错提示,或信息提示 -
2.时间盲注
界面返回值只有一种,都是True,返回页面永远不变,必须要加入特定的时间函数,通过WEB页面返回页面的时间来判断你输入的注入语句是否正确
3.盲注常用函数:
- length():返回字符串长度
- substr(字符串,要截取的位置,长度):截取字符串
- ascii():返回字符的ASCII码
- sleep(n):将程序睡n秒
- if(x,y,z):如果x是对的,就执行y,如果x是错的,就执行z
4.盲注步骤
- a.第一步是判断长度(length()),可以知道库的长度
- b.一个一个的猜库的字母组成
- c.重复上述步骤,挨个猜表名,字段名等
5.布尔盲注:
6.布尔注入的简单做法(burp,sqlmap)
待补
7.时间盲注
8.防御SQL盲注的方法
引用别人的(优快云博主「想走安全的小白」原文链接:https://blog.youkuaiyun.com/wwl012345/article/details/99708427)
1.使用安全的API(应用程序编程接口) 2.过滤危险字符,例如采用正则表达式匹配union、sleep等关键字,如果匹配到,则退出程序。 3.对输入的特殊字符进行Escape转义处理 4.使用白名单来规范用户的输入,对客户端进行控制,不允许输入SQL注入相关的特殊字符 5.服务器端在提交数据之前进行SQL语句查询,对特殊字符进行过滤、转义、替换和删除等操作 6.使用PDO预编译语句,PDO技术就是将查询查询的语句和输入的参数分开,先将需要查询的语句进行预编译,然后再将参数传入进去, 注意,不要将变量直接拼接到PDO语句中,而是使用占位符进行数据库的增删改查。(PDO预编译是防御SQL注入最好的方法)