ctfshow红包挑战8_WP
官方WP:https://ctf-show.feishu.cn/docx/Uy3xdlo9koLQtyxnlUGcpIxunUh?from=from_copylink
1、源码
|
2、分析过程:
extract($_GET);
能够实现变量覆盖,可以给$name
和$value
赋值。- 存在
create_function
函数,可以通过这个实现rce。 - 若不存在
base64_encode
则可以通过$value
实现rce,由于$value
被base64_encode
破坏,导致不可控,因此可以考虑使用$name
。 - 参考这篇博客 匿名函数create_function()代码注入 ,只要
create_function
的形参有一个可控,都能执行php代码。
3、create_function
对于create_function
函数,不能把它当成一个普通的函数看待,而是应该当成一个函数的定义过程。
比如:
create_function($a,$b); |
由此我们可以想,提前闭合create_function
,结束这个函数,那么不久能将php代码逃逸出来了么
create_function( $a , $b ); |
可以发现phpinfo
逃了出来,为了不报错,使用/*
(或者//
)把后面的所有代码都注释掉,由此可以实现rce。
4、payload
?name=){}system("cat /f*");// |
评论