天天看点

06、注入篇--显错注入【数字型】概述注入基础靶场后端代码

概述

注入的本质

  • 用户输入的数据被当做代码执行

注入条件

  • 用户可以控制传参
  • 用户输入的语句被带入数据库并执行

显错注入原理

  • 用户输入的数据被当做SQL语句执行,并带入数据库执行
  • 对用户输入的数据没有做任何过滤,并且将结果返回到页面

注入基础

MySQL数据库基本认知

MYSQL5.0以上版本,将自带information_schema数据库
information_schema 用于存储数据库元数据(关于数据的数据),例如数据库名、表名、列的数据类型、访问权限等 。
该数据库中有两张表tables和columns

TABLES:提供了关于数据库中的表的信息,详细表述了某个表属于哪个schema,
表类型,表引擎,创建时间等信息。tables表中 table_name字段表示 表的名字,
table_schema 字段表示数据库名(数据表所属的数据库名)

COLUMNS:提供了表中的列信息,详细表述了某张表的所有列以及每个列的信息,某个列属于哪个表。
columns表中table_schema字段为数据库名,table_name字段为表的名字,column_name字段为列的名字
           
  • information_schema.tables 存放表名和库名的对应
  • information_schema.columns 存放字段名和表名的对应

显错注入所用函数

order by   -->对字段进行排序
group_concat()   -->将字符连接起来,输出字符串集合,逗号分开
limit start end    限制select的输出数量
database()   -->当前所用数据库名
version()   -->数据库版本号
user()   -->用户名
           

靶场

1、进入靶场

06、注入篇--显错注入【数字型】概述注入基础靶场后端代码

2 、将id=1处1改为2

06、注入篇--显错注入【数字型】概述注入基础靶场后端代码

3、轻松得知:该页面是通过id进行传参,通过改变id的值页面返回不同的内容

4、分别使用and 1=1 和and 1=2 进行探测

06、注入篇--显错注入【数字型】概述注入基础靶场后端代码
06、注入篇--显错注入【数字型】概述注入基础靶场后端代码

5、观察页面发生了变化,使用order by 判断字段数 [一般通过二分法判断]

06、注入篇--显错注入【数字型】概述注入基础靶场后端代码
06、注入篇--显错注入【数字型】概述注入基础靶场后端代码
06、注入篇--显错注入【数字型】概述注入基础靶场后端代码
06、注入篇--显错注入【数字型】概述注入基础靶场后端代码

6、得知字段数为3,使用联合查询

UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。
多个 SELECT 语句会删除重复的数据
           

0 union select 1,2,3

观察回显点

06、注入篇--显错注入【数字型】概述注入基础靶场后端代码

7、回显点2,3,使用version()和database() 获得版本号和当前数据库的名称

06、注入篇--显错注入【数字型】概述注入基础靶场后端代码

8、得知MySQL版本号为5.0以上版本,所以可以使用MySQL自带数据库information_schema中的table和column表爆出数据

9、使用group_concat 爆出当前数据库下的所有表名

06、注入篇--显错注入【数字型】概述注入基础靶场后端代码

10、查询users表下的所有字段

06、注入篇--显错注入【数字型】概述注入基础靶场后端代码

11、查看user和password字段信息

第一种方法:使用limit 依次得出信息

06、注入篇--显错注入【数字型】概述注入基础靶场后端代码
06、注入篇--显错注入【数字型】概述注入基础靶场后端代码

第二种:使用group_concat()得出信息

06、注入篇--显错注入【数字型】概述注入基础靶场后端代码

后端代码

接收id变量的传参,将id的传参值带入数据库进行查询

继续阅读