MYSQL注入
Sqli-labs第二关案例导入
不通的用户权限不同,能够进行的操作也都不一样
在MYSQL5.0以上版本中,mysql存在一个自带数据库名为
information_schema,它是一个存储记录有所有数据库名,表名,列名的数据库,也相当于可以通过查询它获取指定数据库下面的表名或列名信息。
数据库中符号"."代表下一级,如xiao.user表示xiao数据库下的user表名
information_schema .tables:记录所有表名信息的表
information_schema . columns:记录所有列名信息的表
table_name :表名
column_name:列名
table_achema︰数据库名
跨库查询及应用思路
information_schema表特性,记录库名,表名,列名对应表
获取所有数据库名:
Payload:
id=-1 union select 1,group_concat ( schema_name) ,3 from
information_schema . schemata
获取指定qqyw数据库名下的表名信息:
union select 1,group_concat (table_name) ,3 from
information_schema.tables where table_schema='qqyw’
获取指定qqyw下的表名admin下的列名信息:
union select 1, group_concat (column_name) ,3 from
information_schema.columns where table_name=’admin’ and table_schema=' qqyw ‘
获取指定qqyw下的admin数据:
union select 1,u,p,4 from gayw . admin
####文件读写操作
路径获取常见方法:mysql有的两个函数
load_file():读取函数
into outfile或into dumpfile:导出函数
导出失败的解决方法:
load_file :
into outfile :
读取文件:服务器上的常见文件以及网站目录
路径的常见获取方法:
报错显示、遗留文件、漏洞报错、平台配置文件、爆破
magic_quotes_gpc:魔术引号开关
在php中的作用是判断解析用户提示的数据,如包括有:post、get、cookie过来的数据增加转义字符“\”,对POST、__GET以及进行数据库操作的sql进行转义处理,以确保这些数据不会引起程序,特别是数据库语句因为特殊字符引起的污染而出现致命的错误。防止sql注入 当magic_quotes_gpc = On时,输入数据中含单引号(’)、双引号(”)、反斜线(\)与 NULL(NULL 字符)等字符,都会被加上反斜线。
或者在php配置文件里查看(php.ini)
如果开启,就会影响到文件的读取与写入
另一函数:addslashes()效果一致(内置函数)
addslashes()并未将反斜杠一起写入数据库,只帮助完成了sql语句的执行。
解决方法:
1.采用HEX编码(编码里就没有符号影响--绕过访问机制)
2.stripslashes函数删除由 addslashes() 函数添加的反斜杠。
防御方案:用不同方式过滤
WAF防护软件:安全狗、宝塔
原理:接收变量值,再查看关键字是否符号规则
小于5.0的低版本暴力查询:字典爆破
或用load_file 读取文件