Mysql 高级盲注之布尔型盲注【Sqli Blind】_集群智慧网络安全云
全国客户服务热线:4006-054-001 疑难解答:159-9855-7370(7X24受理投诉、建议、合作、售前咨询),173-0411-9111(售前),155-4267-2990(售前),座机/传真:0411-83767788(售后),微信咨询:543646
企业服务导航

Mysql 高级盲注之布尔型盲注【Sqli Blind】

发布日期:2024-05-19 浏览次数: 专利申请、商标注册、软件著作权、资质办理快速响应热线:4006-054-001 微信:15998557370


Mysql 高级盲注之布尔型盲注【Sqli Blind】

什么是盲注 [sqli blind] 盲注通常都是专门为了对付目标页面错误处理的比较好的这种情况,也就是说,有时即使目标存在注入,因为在页面上没有任何回显,此时再想利用常规的 union 曝数据字段可能就不大现实了,于是后来就被人发现了盲注这种技巧,关于盲注的常用类型,主要有三种,基于时间,布尔,错误[实际遇到的非常少]的盲注,不过我们今天暂时只针对布尔型盲注做详细说明,关于其它的技巧,后续还会再单独说明,其实,也算不上什么很高级的技巧,都是一些很基础的堆砌,废话不多说,最好的办法还是直接通过实战来透彻理解盲注。 此次用于实战演示的布尔型盲注点,如下,页面正常情况下是这个样子的 https://www.vgu.ac.in/photo-gallery.php?id=1 还是先简单的判断下目标是否真的存在注入,当我尝试用 ‘’干扰时,发现数据库已经报错了 https://www.vgu.ac.in/photo-gallery.php?id=1 既然报错,就差不多说明,这已经是个注入点了,下面只需要想办法把它的sql语句成功闭合掉即可,也许在这里一眼看去,很可能以为它就是个普通的数字型注入点,其实,它是个字符型注入,这一点在实战中一定要注意,有时候发现数字闭合成功,要马上想到它也可能是个字符型的,因为这个数字到后端很可能是被当成一个字符串来处理的,如下,当我们条件为真时,页面返回正常 https://www.vgu.ac.in/photo-gallery.php?id=1' and 12=12 and 'sec'='sec 当我们的条件为假时,页面返回异常,这也说明我们的闭合没有问题,既然没有问题,我们就可以开始查各种数据了 https://www.vgu.ac.in/photo-gallery.php?id=1' and 12=121 and 'sec'='sec 还是严格按照之前的流程,只不过这次查数据的方式,可能稍微不那么直观了 查询数据库版本,大家可能也看到了,盲注的本质,其实就是逐个字符的截取判断,像这种重复性的操作,如果纯手工来的话,估计得累死,还是老办法,我们直接拿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 我们发现,数字跑到 53 时抛出响应了异常,说明版本号第一位字符的 ascii 码值为 53,其对应的字符为 ‘5’,篇幅原因,我就不一一的跑了,通过逐个位遍历,我们最终得到的完整版本号为 '5.5.57-cll' 查询当前数据库名, 依然是一位位的截取遍历判断 https://www.vgu.ac.in/photo-gallery.php?id=1'and(selectascii(substring((select database()),1,1))=112) and 'sec'='sec 我们看到数据库名的第一个字符对应的 ascii 码值为 118,其对应的字符为’v’,遍历后的最终结果为'vguac_web' 文章来源于:lsh4ck's Blog

Mysql 高级盲注之布尔型盲注【Sqli Blind】