MYSQL注入中首要明确当前注入点权限,高权限注入时有更多的攻击手法,有的能直接进行getshell操作。其中也会遇到很多阻碍,相关防御方案也要明确,所谓知己知彼,百战不殆。不论作为攻击者还是防御都需要了解其中的手法和原理,这样才是一个合格的安全工作者。
高权限注入及低权限注入
root在MYSQL数据库中属于最高权限,除root之外其他都简称为为普通用户权限
不是root权限获取不到数据库名
跨库查询及应用思路
information_schema表特性,记录库名,表名,列名对应表
通过select * from schemata; 进行数据库名查询,再去选择进行查询获取指明数据库里的数据
获取数据库名:
http://127.0.0.1/sqli-labs/Less-2/?id=-1 union select 1,group_concat(schema_name),3 from infomation_shcema.schemata
获取指定pikachu数据库名下的表名信息:
union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=‘pikachu’
获取指定pikachu下的表名member下的列名信息:
union select 1,group_concat(column_name),3 from information_schema.columns where table_name=‘member’ and table_schema=‘pikachu’
获取指定pikachu下的数据:
union select 1,username,pw from pikachu.member
文件读写操作
会用到MySQL数据库里两个内置函数,这两个函数是MySQL数据库特有的,在其他数据库是没有的或者在其他数据库中写法不同,所以这是为什么说注入点分数据库的原因,因为每个数据库内置的安全机制和它的功能不同,这才导致在注入的时候针对不用的数据库采取的攻击思路也不同。MySQL有内置读取的操作函数,我们可以调用这个函数作为注入的攻击。
load_file():读取函数
into outfile 或 into dumpfile:导出函数
参考资料:常见的load_file()读取的敏感信息
路径获取常见方法:
报错显示:一般网站出现错误的时候它会泄露出路径
遗留文件:站长为了调试信息的时候遗留的文件而泄露的路径。用扫描工具可以扫出
漏洞报错:知道对方是用什么程序搭建再去网上去搜索漏洞信息:phpcms 爆路径
平台配置文件:通过读取文件来读取搭建网站平台的配置文件。缺点:路径不是默认的,一旦更改很难找到路径
爆破:
等
常见读取文件列表:
常见写入文件问题
实战时X变为后门代码
魔术引号开关
magic_quotes_gpc
魔术引号及常见防护
编码或宽字节绕过
防护:
低版本注入配合读取或暴力 小于5.0版本
字典或读取
演示
普通用户及root用户操作权限
高权限注入跨库查询操作测试
高权限注入文件读写操作测试
魔术引号开启后相关操作测试
相关自定义代码过滤操作测试