请选择 进入手机版 | 继续访问电脑版
查看: 1274|回复: 6

再谈Mysql中limit后的注入

[复制链接]
  • TA的每日心情

    2016-5-24 16:08
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2016-3-11 09:10:31 | 显示全部楼层 |阅读模式
    0x01 问题来了
       前几天@DM_同学在群里发现一个问题,关于mysql中limit的注入。目前limit后注入的唯一方法是使用procedure analyse进行报错注入,详细请阅读http://zone.wooyun.org/content/18220,在文中提到此方法适用于5.x系列的mysql,然而DM_测试5.6.11的时候此方法报错(无耻盗@DM_图一张):
    2016031019040392033.jpg
    那么问题就来了,翻遍国内外资料,群里各位大佬介不知情况。本着追根溯源的精神,我“不自量力”的翻看了mysql源码,发现了此问题的原因。

    0x02问题根源
    先说结论:此方法只适用于小于5.6.6的5.x系列。
    翻看5.6.6以下版本的analyse()实现
    https://github.com/mysql/mysql-server/blob/5.5/sql/sql_analyse.cc
    重点在加粗函数
    [PHP] 纯文本查看 复制代码
    else if (param->next) 
      { 
        // first parameter 
        if (!(*param->item)->fixed && (*param->item)->fix_fields(thd, param->item)) 
        { 
          DBUG_PRINT("info", ("fix_fields() for the first parameter failed")); 
          goto err; 
        } 
    ······ 
    ······   
        // second parameter 
        if (!(*param->item)->fixed && (*param->item)->fix_fields(thd, param->item)) 
        { 
          DBUG_PRINT("info", ("fix_fields() for the second parameter failed")); 
          goto err; 
        }

    我们动态调试
    输入语句:
    [PHP] 纯文本查看 复制代码
    SELECT id FROM test WHERE id >0 ORDER BY id LIMIT 1,1 procedure analyse(1,extractvalue(rand(),concat(0x3a,version())));

    给proc_analyse_init函数下断点
    对第一个参数做验证,fixed=1
    2016031019072968668.png
    对第二个参数做验证,fixed=0,表示此参数没有被固定,将被fix_fields函数处理
    2016031019074825028.png
    此次可以看见我们的第二个参数
    [PHP] 纯文本查看 复制代码
    extractvalue(rand(),concat(0x3a,version()))

    将被fix_fields处理
    在mysql中所有函数都是用Item_func类来表示的,当然extractvalue也不例外。
    继续跟:
    2016031019084080015.png
    0x03为什么5.6.6以后不行了
    在这个版本的时候analyse函数进行了改写,于是乎不行了
    2016031019142357445.png
    怎么改写的?你没有看错,两个参数都只能为uint了。
    2016031019091774272.png
    0x03总结
    各种装逼半天,其实我就想说limit后的注入,使用analyse()只能5.0.0<mysql<5.6.6的版本
    2016031019094888383.jpg
    2016031019100199998.png
    回复

    使用道具 举报

  • TA的每日心情

    前天 11:29
  • 签到天数: 903 天

    [LV.10]以坛为家III

    发表于 2016-3-11 09:14:13 | 显示全部楼层
    赞一个…… 快拿本子记一下
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-11-3 09:21
  • 签到天数: 82 天

    [LV.6]常住居民II

    发表于 2016-3-11 09:22:00 | 显示全部楼层
    这个牛逼,赞一个!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2020-1-16 21:33
  • 签到天数: 175 天

    [LV.7]常住居民III

    发表于 2016-3-11 09:30:53 | 显示全部楼层
    卧槽C动态调试,老牛换口味了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2016-3-31 10:12
  • 签到天数: 26 天

    [LV.4]偶尔看看III

    发表于 2016-3-11 15:07:06 | 显示全部楼层
    转载请注明出处
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2017-9-11 15:40
  • 签到天数: 425 天

    [LV.9]以坛为家II

    发表于 2016-3-11 16:53:06 | 显示全部楼层
    我无耻的转载了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-3-23 22:27
  • 签到天数: 45 天

    [LV.5]常住居民I

    发表于 2016-3-12 23:05:38 | 显示全部楼层
    原来如此...学习了
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表