目录
前言
MySql注入中首先要明确当前注入点权限,高权限注入时有更多的攻击手法,有的能直接进行getshell(可以通过某种漏洞达到留下后门的操作)操作。其中也会遇到很多阻碍,相关防御方案也要明确,所谓知己知彼百战不殆。不论作为攻击还是防御都需要了解其中的守法和原理,这样才是一个合格的安全工作者。
正文
1.1. 跨库查询及应用思路
前提:存在并得到同服务器上其他网页的root权限漏洞
information_scheme表特性,记录库名、表名、列明对应表
数据库管理中,常规是由每个数据库中的管理员账号进行划片管理,超管root无论在哪都能管理全部的数据库,达到跨库操作的目的。
思路:绕过攻击思路,当前网站无法突破时,借助服务器上的网站,可能用在同一个数据库,当找到其他网站上超管权限时,root型注入点
危害:另外一个网站的注入点,影响到另外一个网站的安全
- 数据库A – 网站A–数据库用户A
- 表名
- 列名
- 数据
- 列名
- 表名
- 数据库B – 网站B–数据库用户B
- ……
- 数据库C – 网站C–数据库用户C
- ……
1.2. 文件读写操作
借助数据库操作的函数实现文件的读写操作
函数 | 作用 |
---|---|
load_file() | 读取函数 |
into outfile 或 into dumpfile | 导出函数 |
读写不是盲目的,常见的load_file()读取的敏感信息,可以读取系统文件的信息,也可以直接编写后门
select load_file(‘D:\demo.txt’);
select ‘adadsda’ into cutfile ‘d://demo.txt’;
有莫名的安全措施,无法操作
1.3. 路径获取常见方法:
报错显示、一流文件、漏洞报错、平台配置文件、爆破等
1.4. 常见写入文件问题:魔术防御引导开关
以phpmyadmin为例,安全设置的开关
路径:窗口工具上:其他选项菜单- ->PHP扩展及设置- ->参数开关设置- ->magic_quotes_gpc
初始化文件路径:(当前使用的数据库版本下的php.ini)
作用:强制转义引号和斜杠标点符号
低版本注入配合读取或暴力
字典或读取
网上找字典去破解
案例
2.1. 普通用户及root用户操作权限
总结:
- 普通用户:操作指定的数据库,进行增删改查等
- root用户:对所有数据库所有内容进行任意操作
2.2. 高权限注入跨库查询操作
以sqlilabs开源靶场为注入点,查询pikachu网站对应数据库中的数据
步骤回顾
-
判断当前点是否可注入
-
“order by 数字”查询注入的表单中列数
-
“select 数字,数字,…… ”查可以显示在网页的数据位置
-
带入函数查信息
-
查询“information_achema”,如下
-
获取所有数据库名
select 1,group_concat(schema_name),3 from information_schema.schemata
-
获取指定pikachu数据库下的表名信息
select 1,group_concat(table_name),3 from information_schema.tables where table_schema=‘pikachu’(where后边的内容记得加引号)
-
获取指定pikachu数据库下的表名users的列名信息select 1,group_concat(column_name),2 from information_schema.columns where table_schema=‘pikachu’ and table_name=‘users’
-
获取指定pikachu数据库下的表名users数据
select 1,group_concat(username),group_concat(password) from pikachu.users
2.3. 高权限注入文件读写操作测试
操作是这么个操作,可是我这儿运行不成功
2.4. 魔术引导开启后相关操作测试
启动:“magic_quotes_gpc”
发现注入语句的引号和斜杠都被强制转义了,失去注入的效果
可借助编码编码工具,将url的部分含有引号和斜杠的部分语句转换成十六进制。
2.5. 相关自定义代码过滤操作测试
内置函数:对输入的数据进行过滤判断
- is_int,判断变量是否为整型
- str_replace , 注入时总会出现相关关键字。如select
破解思路可以更改提交方法:只针对某种提交方法的过滤,换一个提交方法就有可绕过
目的都是为了打乱匹配规则