在我一系列常规的测试后发现,第五关和第六关,是属于报错注入的关卡,两关的区别是一个是单引号一个是双引号。。。当然我是看了源码的。。。。

基于报错注入的方法,我早就忘的差不多了,,,我记的我最后一次基于报错注入是在玩网络攻防平台第几关来着得,那个关卡时基于报错注入的,我当时还特地查了好多资料,学习了学习报错注入,当然在那段时间时,我看到我一个认为不错的团队开始收核心成员了,我就发了一份申请,果不其然,我被刷下来了,,,毕竟我还是菜么。。。。。

当时申请的时候,我就想过,团队不养闲人,毕竟菜,所以菜,我还是继续努力的学吧,虽说是抱着兴趣爱好的玩这个的,万一,我毕业了找工作,有这个机会,我是不是也能找到这个工作了?兴趣变成工作?

好了,话归正题,关于这关需要用到报错注入,而我早就忘的差不多了,,,那咋办了?回想了回想,我一开始玩SQL注入时,我看过习科的SQL手工注入的书,我还看过小迪的SQL注入,当然,,,人家的没教这个报错注入。。。。。还有cracer的我也看过,也没教报错的。。。。

我了个擦,想了好长时间,我还是直接找这个关的答案吧。。。。

搜了好长时间,我突然想开,我好像在某个平台上看过人家有关于这个SQL注入源码平台一系列教程,我赶紧去看了,,,,话说我的这个SQL报错分析,还是在那个平台学会的。。。

我把这个关的呢个教程看了两遍,人家很详细的介绍了报错注入原理,我就按着人家说的,我再总结一编,谁让这是我的专栏,开这个专栏不就是整理汇总知识?来学习的啊?再整理一遍,我就更加深刻的理解了。

不闲话了,正式开始,我先捋一遍报错的原理,然后再打这第五关和第六关。

首先我先把需要报错用到的SQL函数先列开。

打开我mysql数据库。

使用第一个函数 count() 统计元祖的个数 。

说明,我这个虚拟库里有127个元祖。

然后展示 第二个函数, rand() 用于产生一个 0~1的随机数 。

再输出几下。

是不是都不一样?不一样就对了,随机的。

然后我用这个 " floor() 向下取整 " 这个函数,我让他把随机数套在里面。

这样是不是就会只输出 0 ,1 ,这两个数?

再多输出几下。

我擦,不出现1 。。。。。我再输出。。。

好 了,终于出来 1 了,说明,咱们的假设是正确的。

然后我们开始展示 group by 依据我们想要的规则对结果进行分组。

这里就是把information_schema.tables下的table_name,tables_schema 以table_schema为标准开始分组。然后左边的是右边的第一个表名。

恩,就是这个意思。。。。

好了函数都弄完了,开始构造报错语句了。

首先,我们连接一个数据库,我随便连接一个,比如 dvwa 。

然后查询数据库名。

对了,为了让报错显示的好区分一点,我们加上一些分隔符号,这里我用的 " 这个符号,对了先转码一下。

然后开始添加。

是不是就分隔好了,关于 group_concat()这个是啥意思,我在 mysql 注入里,好像说了,想了解的可以去翻翻看。。。如果没有,就自己百度吧,我记得我总结了。。。。

上面那一堆显示头名的有点不好看,我们可以在后面取一个别名,我就写个 shiyan 吧。

看是不是?头名变成 shiyan 了?

下面我们把向下取整这个随机数加进去。

再输出下,还应该出现个1才对,就像上面的一样。

然后,我们再增加一些内容。

这句的意思就是, information_schema.tables 里面有多少条记录,就输出多少次。

应该是这个意思,我也不是太懂,毕竟我对报错还是不咋熟,,,

我看人家视频上是这么说的。。。。就这样吧。。。

我们把这个规整下一下。

用的是 concat 这个函数。

这里还显示了有127条记录。

然后我们开始分组,以 shiyan 为标准开始分组。

一共为两组,随机数就两组就。。。

然后我们再添加一个函数 count() ,这是统计的,我们来统计下一共有多少个0,多少个1.

额,报错了。。。终于报错了。。。。。

然后再多试几遍。。。

看来还不稳定啊,这里,我们就能总结开,到这里就已经开始报错了。

然后我们把报错的信息换成 version() 看看能不能爆出点信息。。。

好的,成功爆出版本号。

我们再换成 user() ,这个试试看。

也是成功的爆出来了。。。。

虽说还是随机的靠运气才能出错,多试几遍还是可以的。

我们是不是还能在这个基础上,增加点查询语句?

额,出错了,应该加上 limit 0,1 这个,我再试试。

好的成功了,,,,

再试一遍。

额,看来也是存在随机性报错啊。。。。

以后多试试几遍,还是可以爆出错误的,现在我们开始在 limit 0,1这里切换下试试。

好的,爆出第二个数据了。

这里报错的原理,详细大家已经有了一个简单的了解了吧?我自己也又加深了一遍。

Sqli labs系列-less-5&6 报错注入法(上)的更多相关文章

  1. Sqli labs系列-less-5&6 报错注入法(下)

    我先输入 ' 让其出错. 然后知道语句是单引号闭合. 然后直接 and 1=1 测试. 返回正常,再 and 1=2 . 返回错误,开始猜表段数. 恩,3位.让其报错,然后注入... 擦,不错出,再加 ...

  2. Sqli labs系列-less-3 。。。

    原本想着找个搜索型的注入玩玩,毕竟昨天被实力嘲讽了 = = . 找了好长时间,我才发现,我没有 = = ,网上搜了一个存在搜索型注入的源码,我看了好长时间,楞没看出来从哪里搜索注入了....估计是我太 ...

  3. Sqli labs系列-less-2 详细篇

    就今天晚上一个小插曲,瞬间感觉我被嘲讽了. SQL手工注入这个东西,杂说了吧,如果你好久不玩的话,一时说开了,你也只能讲个大概,有时候,长期不写写,你的构造语句还非常容易忘,要不我杂会被瞬间嘲讽了啊. ...

  4. Sqli labs系列-less-1 详细篇

    要说 SQL 注入学习,网上众多的靶场,就属 Sqli labs 这个系列挺不错的,关卡达到60多关了,我自己也就打了不几关,一个挺不错的练习SQL注入的源码. 我一开始就准备等我一些原理篇总结完了, ...

  5. sqli注入--利用information_schema配合双查询报错注入

    目录 sqli-labs 5.6双查询报错注入通关 0x01 获取目标库名 0x02 获取库中表的数量 0x03 获取库中表名 0x04 获取目标表中的列数 0x05 获取目标表的列名 0x06 从列 ...

  6. sql盲注之报错注入(附自动化脚本)

    作者:__LSA__ 0x00 概述 渗透的时候总会首先测试注入,sql注入可以说是web漏洞界的Boss了,稳居owasp第一位,普通的直接回显数据的注入现在几乎绝迹了,绝大多数都是盲注了,此文是盲 ...

  7. 又一种Mysql报错注入

    from:https://rdot.org/forum/showthread.php?t=3167 原文是俄文,所以只能大概的翻译一下 这个报错注入主要基于Mysql的数据类型溢出(不适用于老版本的M ...

  8. SQL注入——报错注入

    0x00 背景 SQL注入长期位于OWASP TOP10 榜首,对Web 安全有着很大的影响,黑客们往往在注入过程中根据错误回显进行判断,但是现在非常多的Web程序没有正常的错误回显,这样就需要我们利 ...

  9. sql注入 报错注入常用的三种函数

    1.floor()函数 报错原因是 报错的原因是因为rand()函数在查询的时候会执行一次,插入的时候还会执行一次.这就是整个语句报错的关键 前面说过floor(rand(0)*2) 前六位是0110 ...

随机推荐

  1. 删除STL容器中的元素

    有关stl容器删除元素的问题,错误的代码如下: std::vector<struct> mFriendList; ... std::vector<struct>::iterat ...

  2. 关于C++中nothrow的某某某

    前言 在学习C++中new的种种用法时,在operator new的其中一个重载版本中看一个参数nothrow,想弄清楚到底是什么意思?nothrow顾名思义,就是不抛出的意思嘛!不抛出啥,在C++中 ...

  3. 【SpringBoot】SpringBoot的基础,全面理解bean的生命周期

    前言 前段时间直接上手使用springboot开发了一个数据平台的后台部分,但是自身对于springboot的原理和过程还不是很清晰,所以反过来学习下springboot的基础. 大家都知道sprin ...

  4. fat32转ntfs ,Win7系统提示对于目标文件系统文件过大解决教程

    系统之家 发布时间:18-05-3117:56 很多Win7用户在复制较大的文件时,系统会弹出窗口提示“对于目标文件系统,文件XXX过大”,出现这种情况的原因是FAT32的文件系统不支持复制大于4g的 ...

  5. 支付宝PC端接入PHP

    引入支付宝接口 放入一个插件库中,方便管理 创建支付类 1.发起支付 public function init() { $order_id = $_REQUEST['order_id']; $orde ...

  6. git使用记录三:查看日志

    git使用记录三: git log git log 的帮助文档 git log --help 查看最后面的两个日志记录 命令如下: git log -n number 比如: git log -n 2 ...

  7. VMware Workstation Pro 无法在Windows 上运行 检查可在Windows上运行的此应用的更新版

    1.问题描述 2.排查原因 国庆节后微软推送了一个新的更新补丁,更新之后发现VMware无法打开(未更新前正常). 3.解决方案 3.1卸载微软更新补丁 Windows 10的安全更新难以被彻底规避, ...

  8. for语句基础求和练习

    结构 for(初始化表达式;条件表达式;循环后的操作表达式) { 循环体; } 1.求出1-10之间数据之和: class Hello2 { public static void main(Strin ...

  9. 怎么避免从删库到跑路 -- 详解 mysql binlog 的配置与使用

    1. 引言 使用数据库的时候,我们每个操作都十分小心,尤其是不能直接在数据库上执行 update.delete 等操作,否则万一忘记加全 where 条件,可能就会造成无法挽回的结果. 有一句十分流行 ...

  10. emqtt 分布集群及节点桥接搭建

    目录 分布集群 emq@s1.emqtt.io 节点设置 emq@s2.emqtt.io 节点设置 节点加入集群 节点退出集群 节点发现与自动集群 manual 手动创建集群 基于 static 节点 ...