SQL注入漏洞利用(下)

SQL注入技术分类

基于布尔的盲注:
即可以根据返回页面判断条件真假的注入。
基于时间的盲注:
即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。
基于报错的注入:
即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。
联合查询注入:
可以使用union的情况下的注入。
堆查询注入:
同时执行多条语句的注入。

SQL注入过程

(1)判断是否存在注入点:
在进行输入提交的时候,可以添加一些符号,查看结果是否会返回一些信息提示,如果没有提示,证明输入被过滤掉了,如果有提示,证明输入信息没有被过滤,有注入点。
(2)判断字段长度(字段数):
字段长度是针对select * from XXX;判断究竟有多少列,这里可以使用order by进行判断,因为可以使用列名,也可以使用数字进行判断。
(3)判断字段回显位置:
也就是说去查询信息时,哪些信息可以显示在页面上。好比之前使用数字进行查询时的username和password。
(4)判断数据库信息:
可以查询版本号,数据库安装路径,存放数据的路径,各种变量等。
(5)查找数据库名:
指访问网站时使用的哪个库。
(6)查找数据库表:
知道了库,还要继续知道使用的库中的哪个表。
(7)查找数据库表中所有字段以及字段值:
查看表中都有什么具体有用的信息。
(8)猜解账号密码:
根据数据库表中的信息猜测那个是管理员的账户,因为管理员权限最高。
(9)登录管理员后台。
进行SQL注入时基本就按照这个步骤进行注入,接下来一一进行操作。

判断是否存在注入点

请添加图片描述
接下来输入1’进行测试,

在这里插入图片描述
错误提示:’ LIMIT 0,1 因为再输入1的时候多加了一个 ’ ,产生了报错,现在猜测原sql语句是:select * from XXX where id=X limit 0,1;
接下来再进行验证一下,使用and1=1:
在这里插入图片描述
这个时候可以确定,这是一个数值型的,即id后面跟的是数值,至此,注入点已经确定完毕。

判断字段长度

这里可以使用order by进行判断,因为order by不仅可以使用列名,还可以使用数字对列进行判断:
请添加图片描述

请添加图片描述
至此字段长度就判断完成。

判断回显位置

目前为止,已经直到的信息有:存在注入点,表有三列,但是究竟哪一列显示在哪一部分呢?这里可以使用联合查询进行判断。
先进行铺垫一下:
请添加图片描述
但是现在问题来了,sqli的页面中只能显示一个信息,也就是第一行的信息,不显示出自己测试数值的位置,就无法确定回显位置,那么如何让自己的信息显示出来呢?这里只要让前面的数据查询不到,那么就不会显示,因为select本身就有打印的功能,所以一定会显示自己作测试的数值,这样就可以了。
在这里插入图片描述
接下来,转移到测试页面进行测试:
在这里插入图片描述
现在可以知道了,输入的第二个值会显示在name的后面,第三个值会显示在password后面。

判断数据库信息,查找数据库名

这个时候,就逐渐开始可以窥探其中的内容了:使用version()查看版本,user()查看用户,database()使用的哪个数据库访问的网页、@@datadir,查看存放数据库信息的路径、@@basedir数据库的安装目录。
在这里插入图片描述
在这里插入图片描述

查找数据库表

知道了数据库是security,还想继续知道其中有什么表,知道库名找表名,可以使用非常重要的三张表进行查找:
information_schema_tables中记录了:table_schema库名、table_name表名。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

可以使用limit进行向下查看接下来的数据,直到不存在。但是limit显得太笨,有没有什么方法能一下子都显示出来呢?使用group_concat()函数。
在这里插入图片描述

查找数据库表中所有字段以及字段值

这里用到第二张非常重要的表:information_schema.columns,其中table_name表名,column_name列名。
这里直接group_concat(column_name)from information_schema.columns where table_name=‘users’ –
在这里插入图片描述
使用group_concat就可以一次性将信息打印到一行,现在已经看到了其中的列名:
id,username,password。现在在进行搜索就很简单了:
在这里插入图片描述
现在想要一次性都显示出来,继续套用group_concat函数:
在这里插入图片描述
现在进行优化一下显示的格式:
在这里插入图片描述
现在改成了username:password的格式进行显示了。

猜账号密码,进入后台

这就根据获取的username跟password进行判断就可以了。

至此一个完整的SQL注入漏洞利用的过程就完成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小刘不忙!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值