文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

eval与assert执行一句话木马

2023-09-10 22:14

关注

首先介绍一下木马中最简单的存在,俗称一句话木马

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()测试

测试 1=eval() 构造 eval($_POST[2])

结果是无法连接,下面分析原因

因为eval是一个语言构造器而不是一个函数,不能被 可变函数 调用PHP 支持可变函数的概念。这意味着如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它。

可变函数可以用来实现包括回调函数,函数表在内的一些用途。 可变函数不能用于例如 echo,print,unset(),isset(),empty(),include,require 以及类似的语言结构。需要使用自己的包装函数来将这些结构用作可变函数。

这么看来eval其实并不能算是‘函数’,而是PHP自身的语言结构,如果需要用‘可变’的方式调用,需要自己构造,类似这样子的:

 

2.2   assert()测试

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' 这个数据变成 %40ini_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()) 

来源地址:https://blog.csdn.net/C_LCH_2000/article/details/125949698

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯