HACK80 首页  立即注册  登录
现在注册
已注册用户请  登录
HACK80    视频教程

公开课第十节-Mysql盲注技术  

  •   admin ·2014-6-20 22:38:47·13301 次点击 ·阅读模式     

    马上注册,加入HACK80!与我们一起交流。

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    本节课内容主要为Mysql盲注技术教学
    捕获.PNG

    视频长度:34:00
    视频下载:
    游客,如果您要查看本帖隐藏内容请回复

    文字说明:
    大家好,欢迎来到由HACK80为大家带来的大型公益培训系列教程。。
    我是本系列课程的讲师。
    我的QQ是1662534536
    我们的网址是 http://www.hack80.com

    恩,今天所要讲的内容是mysql盲注技术。

    盲注(blind sqlinjection)
    盲注也是注入的一种,但是不能像平常那样,通过页面的显示位来获取数据
    盲注的世界里只有true和false
    盲注的类型。
    攻击者根据其返回页面的不同来判断信息(可能是页面内容的不同,也可以是响应时间不同)。一般情况下,盲注可分为三类。
    单词可能写错了啊,英语渣比,哈哈

    首先来演示一下。我新建了一个数据库和两个表,若干字段。
    首先,我们正常的查询一下,users表中的值
    我打这些语句应该都能懂吧,我记得我前几节课似乎说过的吧。
    时间类型的盲注一般是两个函数sleep和benchmark。
    然后我自己在本地搭建了一个站点,是根据页面返回正确和错误来判断的。
    本来是想给大家演示个sina的盲注,前两天看了一下,修复了。就算了。
    在网页上的话,这些就是显示位。
    我们看一下sleep
    2 rows in set (0.00 sec)
    因为有联合查询,所以是两条语句,执行的时间注意一下,是0秒
    1 row in set (5.00 sec)
    使用了5秒。
    这就是sleep的功能,那我们怎么来判断注入呢,
    我们知道,id这个字段是存在的。
    所以是正常查询出来的,花费5秒
    而在页面上的话,就是页面要响应5秒。
    那么我们来查询一个不存在的字段
    直接抛出错误了。
    这样的话,页面直接就错误了,
    从28行到33行
    我说这些,应该能理解吧。
    这就是判断字段是否存在的方法。
    如果字段正常存在的话,页面会响应5秒,不存在的话就直接异常。
    接下来看benchmark
    我想一下啊,要用什么字段
    我日,语句错了,我看一下。
    草,多括号少括号,,视力不好啊。。蛋疼
    时间有点短,我加多一点
    先说一下,ord是进行ascii编码的函数
    substring应该都明白吧,是截取字符串。
    我们先来看一下admin这个表的内容
    id为1的username的第一个字符是a  a的ascii值是97
    小写的a的ascii值是97
    当查询正确的时候,会响应一段时间,然后正常的查询出来,
    如果查询错误的时候,就不会响应那个时间也就是不会执行benchmark这个函数。
    再演示下,注意语句执行的时间,我草他大爷,这输入法。。
    这是查询username这个字段的第一个字符的ascii值是96。
    可以看到,应该正常出现的显示位没有出现,执行的时间短,说明错误了,也就是说
    username这个字段的第一个字符的ascii值不是96
    看到了,当为97,也就是正常值的时候,显示位是出现的,而且有响应的时间。
    晓得了吧,因为盲注的世界里只有true和false,只有用页面的正常或错误来判断数据。
    好的,就说这么多吧,下面来实例演示。
    这个是metinfo cms,网上有代码审计的过程,由于之前我也在看代码审计,
    也同样审计出了一个盲注。
    为了节省时间,我们就直接打开页面来操作吧。
    单引号报错了
    正常
    错误。
    说明已经存在了注入。
    到这里呢,我们可以直接使用sqlmap来跑,但是在实际的渗透中,有些奇葩的情况,工具跑不了
    只能手工了,算了,我就不演示sqlmap了,应该都会吧?

    AND/OR time-based blind
    看到了,是一个盲注blind
    那么继续,下面来判断当前数据库的长度
    换下歌
    and length(database())>10
    看看长度是不是大于10
    大于4正常 大于五错误
    说明长度就是5
    看到了,5的时候返回了正常
    and ascii(substring((database()),1,1))>97
    这是看当前数据库的名字的第一个字符的ascii值是不是大于97 也就是a
    108正常 109错误 那就是109了
    也就是说,第一个字符是m
    下面就看操作吧,
    109  101  116 53 48
    由于长度刚才测试出了,是5
    所以查出5位就行了
    我们对应着查一下
    met50
    能判断是met50是数据库名。
    我们来看一下数据库,是不是真的存在这个
    存在吧。
    嗯,这就是步骤了。
    以下关于字段 表的就不多介绍了
    大家回去自己试试吧。

    这套cms是metinfo 5.0版本
    大家回去自己下一个,按照我之前讲的内容在虚拟机上搭建php环境,然后自己测试。
    通过手工,能够把字段和表爆出的,发到论坛上,我们伟大的站长会给大家金币的哦。
    哈哈

    手工真的挺麻烦的。。。

    行了,不多说了。大家回去自己再研究下吧,

    最后说一下
    希望大家多多上http://www.hack80.com
    进行讨论。
    我们下节课再见吧。88

     1    金币 +2
    13301 次点击 · 1 人收藏  
    收藏  转播  分享
    63 回复
      Reply  
    harvey1109  2014-6-21 04:29:47 
    新手继续来学习
      Reply  
    local  2014-6-21 09:31:30 
    来学习了
      Reply  
    2Sr  2014-6-21 11:17:07 
    {:4_120:}楼主  继续淫荡吧
      Reply  
    眷恋轮回  2014-6-21 11:34:04 
    来支持了哦!!!!!!!!!!!!!!!!!!!
      Reply  
    擦亮眼睛看星星  2014-6-21 14:34:49 
    好好哈哈哈哈哈哈
      Reply  
    沉默  2014-6-21 19:12:06 
    好好好。。。。。。
      Reply  
    mysoft  2014-6-22 13:58:52 
    回复中。。。请稍后。。。
      Reply  
    SUN_CY471  2014-6-22 17:11:41 
    不错 支持。。。。。
      Reply  
    暗精灵、  2014-6-22 19:57:01 
    我来晚了{:4_110:}
    添加一条新回复
    您需要登录后才可以回帖 登录 | 立即注册

    本节点积分规则
    QQ
    小黑屋   ·   手机版   ·   215 人在线 最高记录 5500   ·   TOP
    我们很年轻,但我们有信念、有梦想!

      我们坚信只有今天付出了,才有机会看到明天的太阳!现在!加入我们,给你一个气氛优秀的技术圈子。  
    GMT+8, 2018-7-22 13:03, Processed in 0.050462 second(s), 24 queries .