PHP Create_function()
Contents
简单写写PHP中利用create_function()进行rce的方式
create_function()简介
适用范围:PHP 4> = 4.0.1,PHP 5,PHP 7
功能:根据传递的参数创建匿名函数,并为其返回唯一名称。
语法:
|
|
官方案例:参考:https://www.php.net/create_function
|
|
这个函数用于创建一个匿名函数并调用,在其内部会执行 eval()
因此,上述匿名函数的创建与执行过程等价于:
|
|
利用分析:如果传入的参数用户可控,稍微构造就能进行命令执行,如果不可控,可以配合项目中已有的危险函数或者后门进行利用。
我们简单以NUAACTF的题举个栗子:
源码:
|
|
这是后来出题师傅改过的,因为原题被打了非预期。
分析源码,很明显我们给$func传入create_function
,给$arg传入s
然后创建的匿名函数的结构是这样:
|
|
这样会报错,因为少了个$,我们传入$s,就没有报错了
然后构造:arg=$s){}phpinfo();/*
接下来就可以执行任意命令了,反弹shell啥的都可以
payload:
|
|
或者:
|
|
flag:nuaactf{34986668}