MySQL 报错注入原理分析以及运用

0x00 前言

之前在做sqli-labs 第五第六题的时候是利用盲注来进行做的 中途操作过程非常繁杂每个信息都要使用脚本来进行拆解 就算我用python编了相应的脚本 仍然感觉麻烦 所以昨天再去看了看 好像题目的本意不是让我们用盲注的方法来实现的 题目是想让我们使用报错注入 (双查询注入)来进行获取数据库的一些信息

0x01 原理分析

首先需要知道的一些知识

为什么叫做报错注入 原因就是我们是通过反馈出来的错误来获取到我们所需要的信息的 那么这是如何报错的呢? 在数据表中由于主键是不可重复的 所以我们利用一些函数来使得主键重复从而报错 Duplicate entry 其实报错注入的种类是非常多的 但是由于本人实力有限只接触到了主键方面的报错 后续接触到了别的会陆续补充

在利用这种报错注入的过程中我们需要使用几个函数 rand() floor() count() 这三个函数 现在我先简单的解释一些这三个函数 rand()函数就是生成一个 0,1 floor()函数是一个取整函数 count()函数就是一个进行统计函数 效果如下

这是一个rand函数的效果

然后我们再来看一下 rand(0) 和rand() 有什么区别 我先说明一下 rand(0) 在超过三条之后就会有规律 我们来看图片 这样会更加的清晰

这里我都限制了5个然后可以从截图里面看出来 这些随机出来的数字都是一样的

count 就是统计记录的个数 话不多说直接上图

这里可以看出来 记录一共有 303条

通过前面的 rand(0)的规律 我们再乘2来看看 然后我们可以发现出来的0,1也是有规律的

然后也是看网上的文章说道 当 group by() 结合rand() count(*) 会出现报错 这也就是为什么叫做报错注入 所以我们可以利用concat 将我们的查询语句和 floor(rand(0)*2)放置到一起这样就会在报错里面输出我们想要的结果 看到这里坑定会比较迷茫吧 为什么这样会报错 先不急 我们先来看一下结果 然后后面我们就会将原理进行讲解 先把语句展示出来

?id=1″ union select 1,count(),concat(0x3a,0x3a,(version()),0x3a,0x3a,floor(rand(0)2))a from information_schema.tables group by a %23

效果如下 可以看出来我们成功获取到了数据库的版本信息

这里的0x3a是十六进制的 : 的意思 这样看起来就比较清晰

原理讲解

好那么让我们现在来研究为什么 在和聚合函数组合的时候会出现错误 那么执行 select count(*) from information_schema.tables group by floor(rand(0)*)的时候会发生什么呢 根据一些资料上看到 mysql 在遇到 这个语句的时候会创建一个虚拟表 所以说流程是这样的

前面已经提到了 rand(0) * 2 在数据超过三条以上的时候 出现的数字是由规律的 类似 我们就拿前五个来说明 前五个分别是 0 1 1 0 1 在正式说明之前 有一个很关键的地方需要知道 就是 floor(rand(0)*2) 是会重复进行运算的 在插入记录的时候又会进行一次 计算

第一步 

select count(*) from information_schema.tables group by floor(rand(0)*) 的时候 会创建一个虚拟表 这个虚拟表有两个字段 一个是 key也就是主键这是不可以重复的 还有一个count(*) 这个是记数的 然后第一次的数值是 0 系统发现 虚拟表中没有 0 所以会进行插入 但是在插入的时候 又会进行一次 floor(rand(0)*2) 这时候 计算结果是 1 然后将 1 插入到表中 计数为 1

第二步

之前其实已经进行了两次运算了 然后继续执行 再下一次是 1 检查虚拟表 嗯很好 1 已经存在好 那么计数加一 继续执行 根据011 011 后面那次也就是 第四次了 第四次打数字是 0 系统检查虚拟表里面是没有 0 的所以执行插入操作 然后在插入操作的时候还是会进行一次运算的 也就是说在插入的时候会进行第五次运算 所以这时候运算结果是 1 想要插入 这时候发现 虚拟表里面已经有1 由于主键不能重复 所以就报错了

所以报错注入 的 version() 可以换成别的 注入语句都是可以的

select 1,count(),concat(0x3a,0x3a,(version()),0x3a,0x3a,floor(rand(0)2))a from information_schema.tables group by a %23

这是我的网站

http://www.wjlshare.tk/

参考文章链接

https://mochazz.github.io/2017/09/23/Double_%20SQL_Injection/

http://drops.xmd5.com/static/drops/tips-14312.html

http://lawlietweb.com/2017/11/12/error-base/

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,117评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,963评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,897评论 0 240
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,805评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,208评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,535评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,797评论 2 311
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,493评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,215评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,477评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,988评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,325评论 2 252
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,971评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,807评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,544评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,455评论 2 266

推荐阅读更多精彩内容

  • 环境:mysql 5.1.73 1.首先普及几个mysql里面的函数 floor() 在mysql里面floor(...
    zzqsmile阅读 2,198评论 3 2
  • sql注入报错注入原理解析 先放上几条payload,免费自取~ 如果关键表被禁用: 如果rand()函数被禁用可...
    __周__阅读 1,190评论 0 3
  • Sql注入定义: 就是通过把sql命令插入到web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行...
    付出从未后悔阅读 647评论 0 3
  • 花了3天时间学习MySql,考了个二级MySql 书籍参考:高等教育出版社《全国计算机等级考试二级教程-MySQL...
    如果仲有听日阅读 1,224评论 4 4
  • 在蚌埠市东郊曹山上,有一户靠养蜂生活的人家,夫妻带个儿子,一家三口吃住养蜂都是在那个郁郁葱葱、到处都是树木、鲜花盛...
    鄭兵阅读 991评论 0 0