分享
| 2023-3-27
0  |  Read Time 0 min

web261

关键点:file_put_contents,this→username this→password 可控
如果类中同时定义了 __unserialize() 和 __wakeup() 两个魔术方法,
则只有 __unserialize() 方法会生效,__wakeup() 方法会被忽略。
所以在该题中,只有unserialize()会被激活。事实上随意构造一个payload尝试一下也是如此,仅仅调用了unserialize和destruct
 
这里看似有两个注入点,一个 __invoke(),还有一个destruct。invoke在什么情况下可以被调用呢?我们可以试一下
可以看出,除非这个对象被直接当成函数调用,否则没法调用到invoke。没关系,我们还有第二个注入点,desturct。
我们首先得知道这个 0x36d 是什么,我发现这个ctfshow特别喜欢36d
 
构造一个shell,内容就是eval就行了

web263

关注到 /inc/inc.php 上有一行
ini_set('session.serialize_handler', 'php');

开会

  • GitTalk
Catalog