1. SQL盲注简介
(1)SQL盲注
SQL Injection(Blind),即SQL盲注;
注入:可以查看到详细内容;
盲注:目标只会回复是或不是,没有详细内容;
(2)手工盲注思路
手工盲注的过程,就像你与一个机器人聊天,这个机器人知道的很多,但只会回答“是”或者“不是”,因此你需要询问它这样的问题,例如“数据库名字的第一个字母是不是d啊?”,通过这种机械的询问,最终获得你想要的数据。
(3)SQL盲注的类型
基于布尔值的盲注;
基于时间的盲注;
基于报错的盲注;
在本次实验中只演示基于布尔值的盲注与基于时间的盲注;
(4)SQL盲注的过程
1. 判断是否存在注入,注入是字符型还是数字型;
2. 猜解当前数据库名;
猜解数据库的长度;猜解数据库的名称;
3. 猜解数据库中的表名;
猜解库中有几个表;猜解表的长度;猜解表的名称;
4. 猜解表中的字段名;
猜解表中有几个字段;猜解字段的长度;猜解字段的名称;
5. 猜解数据;
2. SQL盲注
实验环境
(1)Windows服务器:Windows Server 2003,IP地址:192.168.37.128;
(2) 测试机:Windows7物理机(开启代理,代理服务器为burpsuite)
实验过程
安全级别:Low
(1)设置安全级别
(2)查看源码
(3)源码分析
Low级别的代码对参数id没有做任何检查、过滤,存在明显的SQL注入漏洞;
同时SQL语句查询返回的结果只有两种:
User ID exists in the database;User ID is MISSING from the database;
(4)实验操作
基于布尔值的盲注
4.1> 判断是否存在注入,注入是字符型还是数字型;
输入1,查询成功;
输入1' or '1'='1#,查询成功,证明存在字符型SQL注入;
4.2> 猜解当前数据库名;
4.2.1> 猜解数据库名的长度;
输入 1' and length(database()) =4 #