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

时间:2022-07-21 03:08:04

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

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

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

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

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

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

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

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

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

Sqli labs系列-less-5&6 报错注入法(上)打开我mysql数据库。

Sqli labs系列-less-5&6 报错注入法(上)使用第一个函数 count() 统计元祖的个数 。

Sqli labs系列-less-5&6 报错注入法(上)说明,我这个虚拟库里有127个元祖。

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

Sqli labs系列-less-5&6 报错注入法(上)再输出几下。

Sqli labs系列-less-5&6 报错注入法(上)是不是都不一样?不一样就对了,随机的。

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

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

Sqli labs系列-less-5&6 报错注入法(上)再多输出几下。

Sqli labs系列-less-5&6 报错注入法(上)我擦,不出现1 。。。。。我再输出。。。

Sqli labs系列-less-5&6 报错注入法(上)好 了,终于出来 1 了,说明,咱们的假设是正确的。

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

Sqli labs系列-less-5&6 报错注入法(上)这里就是把information_schema.tables下的table_name,tables_schema 以table_schema为标准开始分组。然后左边的是右边的第一个表名。

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

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

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

Sqli labs系列-less-5&6 报错注入法(上)然后查询数据库名。

Sqli labs系列-less-5&6 报错注入法(上)对了,为了让报错显示的好区分一点,我们加上一些分隔符号,这里我用的 " 这个符号,对了先转码一下。

Sqli labs系列-less-5&6 报错注入法(上)然后开始添加。

Sqli labs系列-less-5&6 报错注入法(上)是不是就分隔好了,关于 group_concat()这个是啥意思,我在 mysql 注入里,好像说了,想了解的可以去翻翻看。。。如果没有,就自己百度吧,我记得我总结了。。。。

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

Sqli labs系列-less-5&6 报错注入法(上)看是不是?头名变成 shiyan 了?

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

Sqli labs系列-less-5&6 报错注入法(上)再输出下,还应该出现个1才对,就像上面的一样。

Sqli labs系列-less-5&6 报错注入法(上)然后,我们再增加一些内容。

Sqli labs系列-less-5&6 报错注入法(上)这句的意思就是, information_schema.tables 里面有多少条记录,就输出多少次。

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

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

我们把这个规整下一下。

Sqli labs系列-less-5&6 报错注入法(上)用的是 concat 这个函数。

Sqli labs系列-less-5&6 报错注入法(上)这里还显示了有127条记录。

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

Sqli labs系列-less-5&6 报错注入法(上)一共为两组,随机数就两组就。。。

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

Sqli labs系列-less-5&6 报错注入法(上)额,报错了。。。终于报错了。。。。。

然后再多试几遍。。。

Sqli labs系列-less-5&6 报错注入法(上)看来还不稳定啊,这里,我们就能总结开,到这里就已经开始报错了。

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

Sqli labs系列-less-5&6 报错注入法(上)好的,成功爆出版本号。

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

Sqli labs系列-less-5&6 报错注入法(上)也是成功的爆出来了。。。。

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

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

Sqli labs系列-less-5&6 报错注入法(上)额,出错了,应该加上 limit 0,1 这个,我再试试。

Sqli labs系列-less-5&6 报错注入法(上)好的成功了,,,,

再试一遍。

Sqli labs系列-less-5&6 报错注入法(上)额,看来也是存在随机性报错啊。。。。

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

Sqli labs系列-less-5&6 报错注入法(上)好的,爆出第二个数据了。

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