1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 墨者靶场-SQL手工注入漏洞测试(MySQL数据库-字符型)

墨者靶场-SQL手工注入漏洞测试(MySQL数据库-字符型)

时间:2021-07-02 05:26:58

相关推荐

墨者靶场-SQL手工注入漏洞测试(MySQL数据库-字符型)

0x00 前言

我们都知道,SQL注入分数字型和字符型,我们上次讲的是最基本的数字型SQL注入,这次我们就来讲最基本的字符型SQL注入。同样,如果是明白原理和方法的话,看懂这篇文章并不难,但是如果不清楚原理和方法的话…还是可以看的,大家多多给我点赞吧,哈哈哈哈哈,还是那句话,菜鸟一个,大佬勿喷~

0x01 过程

首先,还是老样子,我们先看一下题目

这里通过题目我们知道,这次SQL注入是字符型的SQL注入那我们就进入靶场环境可以看到和上次一样,有一个登录系统,登录框下面有一个维护新闻轮播框我们点进去可以看到,URL栏上也同样存在着GET传参但是和上次不同的是,这次传参的值是一串字母,而上次的是数字,在通过题目结合,这就是字符类型

那这里我们就提出一个疑问,什么是数字型,什么是字符型?这里我就在本地的数据库,使用查询语句来给大家来解开疑惑我们看这个表里面有两个字段,一个是id,,一个是name

那我们先用查询语法来查询一下,我们先查询id这个字段

我们看到查询这个表里面id=1的数据,都显示出来了重点来了,那我们看一下查询name=admin

我们看到这里查询失败了,这是为什么呢?好了,我直接说重点吧,因为这里是查询条件是字符,所以是要加单引号或者双引号

看到了吧,这就是数字型和字符型的差别在网站的传参里,是单引号还是双引号,甚至是有括号,那我们就不得而知。只有去试才知道,因为这是开发所决定的,渗透测试嘛,就是要多尝试~好了,回归正题,如果是字符型的传参,如果直接像数字型一样,直接输入 and 1=1 是不是就相当于直接输入在单引号或者双引号里面了?就相当于字符串了,还怎么来测试是否可以执行数据库操作语句

就像这样,输入的测试语句都被单作传参的字符串了这就是数字型和字符型的差别,数字型可以直接输入 and 1=1 | and 1=2 来测试是否输入的内容被当作代码去执行好了,我就不卖关子了,其实我们主动输入一个单引号或者双引号来让它闭合然后输入测试语句,最好在注释掉它原来的单引号或双引号,就样不就好了吗?废话,也不多说了,直接看操作吧我们先看按数字型的测试方法直接输入 and 1=1 | and 1=2 来看看,然后再看字符型的操作

这里只是输入and 1=1 就直接报错了我们再来看一下,字符型的操作先注入一个单引号让它闭合后再输入测试语句然后注释掉原来的单引号

这里直接再url参数后面输入 ’ and 1=1 – qwe 和 ’ and 1=2 – qwe

这里可以看出,and 1=1 页面显示正常和 and 1=2 页面报错SQL注入的核心是什么?是用户输入的内容被当作代码去执行了。这里输入的内容被当作代码去执行了,说明存在SQL注入老样子,使用union联合查询(条件:union前后两条查询语句字段数必须相同),我们先用order by来看一下字段数是多少

order by的临界点是页面报错就是字段数

如order by 1 、order by 2 、order by 3页面显示正常,到了 order by 4页面报错,说明字段数是3个

这里我就跳过了重复的order by…直接看报错

order by 5页面报错了,说明字段有4个上次说过,网站的数据库字段的数据,有些数据会显示,有些不会显示出来,这是网站开发者所决定的所以我们需要找到显示位是哪个废话就不多说了,直接看操作吧因为数据库的特性是先输出前面的内容,这里如果前面的内容被显示出来,就会把显示位给占了,那我们就要再前面的参数随便输入一个数据查询不出来的东西,前面不输出,如果后面查询语句为真就可以输出到网站显示位里

显示位是2,3那我们就看看当前数据库

数据库名是:mozhe_discuz_stormgroup我们通过information_schema这个库来查询当前数据库下有什么表

得到mozhe_discuz_stormgroup数据库下有:notice和stormgroup_member两个表这样一眼就能看出我们需要的数据存在 stormgroup_member 这个表里面我们来查询一下看看 stormgroup_member 表里面有什么字段

stormgroup_member表里面有:id 、name、passwor、stutas这样就知道我们需要的数据就存在name和password里面那我们就直接查询这两个字段的数据就可以得到我们需要的账号密码

得出账号是:mozhe密码是:e113e13b874e812ca17af9761be5d3c7然后密码拿去解密

解密后是:328213我们打开刚开始的登录系统,输入账号和密码登录成功,获得flag

提交flag值

这次的墨者靶场-SQL手工注入漏洞测试(MySQL数据库-字符型)之路就结束了

0x03 结论

数字型和字符型的区别就是:前者可以直接输入语句测试是否存在SQL注入,而后者则有单引号或者双引号,需要先闭合然后注释掉原来的单引号或双引号,以后可能还会碰到带括号等等的情况,这只能通过试。渗透测试嘛,就是要多试多练;大佬勿喷,小弟水平有限,哪里如有不对的话请见谅

0x04 END

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。