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/