freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

可能存在代码注入的相关PHP函数总结
南城夕雾 2021-09-06 23:28:48 230757

eval()函数执行 代码注入的方法:图片.png

如上图所示,给变量a赋的值是想要执行的命令加上分号,然后给eval函数传的参数是变量a,这样就会通过eval()执行phpinfo()这个命令。

assert()函数执行 代码注入的方法:

图片.png

如上图所示,assert()想要执行php代码,我们需要先给变量a赋值,把我们要执行的命令用反引号括住然后传给eval函数,并把这些赋值给变量a,最后再把变量a传入assert()函数即可。

call_user_func()函数执行 代码注入的方法:

图片.png

该函数输入的第一个参数是调用的函数,第二个参数是传给调用的函数的参数。例如上图,我们通过call_user_func()调用assert(),执行phpinfo()这个命令。

call_user_func_array()函数执行 代码注入的方法:

图片.png

该函数传入的第一个参数是想要调用的函数,第二个参数是传给调用的函数的参数,但是该参数需要以数组的形式出现。如上图所示,我们通过call_user_func_array()调用assert()执行phpinfo()命令。

create_function()函数执行 代码注入的方法:

图片.png

如上图所示,我们可以通过create_function(),给第一个参数传入的是所调用函数所传入的参数(或者所执行命令需要的参数),给第二个参数传入的是所调用的函数(或者所执行的命令)。

preg_replace()函数执行 代码注入的方法:

图片.png

如上图所示,当第一个参数能够通过正则匹配成功替换掉第三个参数的时候,第一参数后面跟有/e,那么就会将第二个参数当做php代码执行。

array_map()函数执行 代码注入的方法:

图片.png

第一个参数传入想要调用的函数 第二个参数传入调用函数所使用(传入)的参数,即可执行命令。

执行效果:
图片.png

源代码是这样也可以:
图片.png

就是在代码中它不再使得第二个参数是数组,我们可以通过传参的时候,使用上面图片中的方法使得第二个参数是数组,从而达到相同的效果。

usort()函数执行 代码注入的方法:

图片.png

usort() 使用用户自定义的比较函数对数组进行排序。要执行的命令赋值给数组的第一个值即可,如上图所示。

uasort()函数执行 代码注入的方法:

图片.png

如上图所示,uasort()的第一个参数值的类型需要为数组,我们可以将该数组的第一个值,赋值为我们想要执行的命令,uasort()的第二个参数值为所调用的函数。

例如:我们可以通过给pass赋值为phpinfo(),从而来执行phpinfo()。
图片.png

${ } 执行代码注入的方法:

图片.png

我们在${ }中输入我们想要执行的命令即可。

# php漏洞 # 代码执行 # php代码执行 # php漏洞函数
本文为 南城夕雾 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
南城夕雾 LV.6
这家伙太懒了,还未填写个人描述!
  • 56 文章数
  • 148 关注者
谈谈域渗透中常见的可滥用权限及其应用场景(二)
2022-12-16
Hack The Box 系列域渗透之靶机Multimaster
2022-12-12
Hack The Box 系列域渗透之靶机Cascade
2022-12-02