MySQL手工注入详解:信息收集与漏洞利用流程
需积分: 8 81 浏览量
更新于2024-08-04
收藏 2KB MD 举报
"SQL手工注入公开课资料(2).md"
这篇资料主要讲述了SQL手工注入的相关知识,特别是针对MySQL数据库。SQL手工注入是一种常见的安全漏洞,攻击者通过构造恶意的SQL语句来获取、修改、删除数据库中的敏感信息。以下是详细的解释:
### 1. 信息收集
在进行SQL注入攻击时,首先需要收集数据库的信息。`SHOW DATABASES;` 命令用于显示所有的数据库名称,`USE 数据库名;` 切换到指定的数据库,`SHOW TABLES;` 则用来查看当前数据库中的所有表。
### 2. SQL语句基础
基础查询包括查询所有数据库名称、选择数据库、显示所有表以及查询表中的数据。`SELECT * FROM 表名 WHERE 条件;` 是一种常用的查询方式,`*` 代表所有字段。`IF` 和 `SELECT` 结合可以进行条件判断。`UNION` 用于合并两个或多个`SELECT`语句的结果集,但要求字段数量相同。
### 3. MYSQL手工注入流程
1. **判断注入点**:通过输入如 `And 1=1 And 1=2` 的测试语句,观察页面返回结果的变化,确认是否存在注入点。
2. **猜解列名数量**:利用 `ORDER BY` 字段编号,比较错误和正常的响应,推测列的数量。
3. **报错猜解**:例如 `Id=-1 UNION SELECT 1,2,3,4`,尝试通过报错信息来获取列数。
4. **判断回显点**:找到注入后能反馈信息的位置。
5. **信息收集**:获取数据库版本、数据库名、数据库用户和操作系统等信息,如 `version()`, `database()`, `user()` 和 `@@version_compile_os`。
### 4. MYSQL系统库释义
从 MySQL 5.0 版本开始,有一个名为 `information_schema` 的内置数据库,它包含了许多元数据表,如:
- `information_schema.TABLES` 存储所有表名信息,`Table_name` 是表名,`Table_schema` 是数据库名。
- `information_schema.COLUMNS` 记录所有列名信息,`Column_name` 是列名。
攻击者可以通过以下语句来获取信息:
- 查询指定数据库名下的所有表名:
```
SELECT 1, GROUP_CONCAT(table_name), 3, 4
FROM information_schema.tables
WHERE table_schema = database();
```
- 查询指定表名下的所有列信息:
```
SELECT 1, GROUP_CONCAT(column_name), 3, 4
FROM information_schema.columns
WHERE table_name = '指定表名';
```
了解这些SQL手工注入技术和MySQL系统库的使用,对于数据库安全防护和渗透测试至关重要。为了防止SQL注入攻击,应当确保应用程序对用户输入进行充分的验证和转义,同时定期更新数据库系统,修补已知的安全漏洞。
点击了解资源详情
点击了解资源详情
点击了解资源详情
1635 浏览量
1894 浏览量
10125 浏览量
901 浏览量
点击了解资源详情
胖胖流氓兔
- 粉丝: 6
- 资源: 1
最新资源
- 火炬连体网络在MNIST的2D嵌入实现示例
- Angular插件增强Application Insights JavaScript SDK功能
- 实时三维重建:InfiniTAM的ros驱动应用
- Spring与Mybatis整合的配置与实践
- Vozy前端技术测试深入体验与模板参考
- React应用实现语音转文字功能介绍
- PHPMailer-6.6.4: PHP邮件收发类库的详细介绍
- Felineboard:为猫主人设计的交互式仪表板
- PGRFileManager:功能强大的开源Ajax文件管理器
- Pytest-Html定制测试报告与源代码封装教程
- Angular开发与部署指南:从创建到测试
- BASIC-BINARY-IPC系统:进程间通信的非阻塞接口
- LTK3D: Common Lisp中的基础3D图形实现
- Timer-Counter-Lister:官方源代码及更新发布
- Galaxia REST API:面向地球问题的解决方案
- Node.js模块:随机动物实例教程与源码解析