SUCTF2018 annonymous
本文最后更新于:2024年7月28日 下午
[SUCTF 2018]annonymous
1 | |
目的很明确
用$_GET["func_name"](); 通过执行SUCTF_$hash()进而执行 $MY = create_function("","die(`cat flag.php`);");创建的匿名函数
但是$hash得不到,无法执行SUCTF_$hash()
create_function()函数在创建之后会生成一个函数名为:%00lambda_[1-···] 后面的数字是递增的
因此创建的匿名函数其实是有名字的,例如%00lambda_1 、%00lambda_13 、 %00lambda_55
因此可以绕过SUCTF_$hash(),直接执行匿名函数
这里有两种方法,
第一种是直接爆破,这个很简单就不多说了
第二种是通过大量的请求来迫使Pre-fork模式启动,Apache启动新的线程,这样这里的函数名后面的数字会刷新为1
原理
Apache服务器的Pre-fork模式意味着在服务器启动时,就会预先创建一定数量的子进程(工作进程),用于处理客户端的请求。
我们可以通过发送大量请求来增加服务器的负载。
如果请求足够多,将会耗尽所有预先创建的子进程。
这时,Apache服务器会启动新的子进程来处理额外的负载
启动新的子进程时,用于生成函数名的计数器将会重置
%00lambda_[1-···] 后面的数字会从1开始重新计数。

SUCTF2018 annonymous
http://example.com/2024/07/28/SUCTF2018-annonymous/