上一篇翻译中讲述了用LD_PRELOAD劫持系统的rand()函数,使rand()函数永远return 42
,算是简单介绍了原理。
在这一篇中,我们把这个思想再深入一点,讲讲CTF中常见的利用LD_PRELOAD来bypass disable_function。
disable_function 是什么?
我们来看一看官方说明:
https://www.php.net/manual/zh/ini.core.php#ini.disable-functions
本指令可用于禁止某些函数。接受逗号分隔的函数名列表作为参数。
此指令仅能禁用 内置函数。 不能影响用户自定义函数。
本指令只能设置在 php.ini 中。例如,无法在 httpd.conf 中设置。
最基本的
index.php:
|
|
Dockerfile:
|
|
|
|
然后访问 http://localhost:8081/
,传入参数c=phpinfo();
,能够看到phpinfo说明你的环境正确: