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*");// |
评论









