首页后端开发JAVA[ctfshow]PHP反序列化(未完)

[ctfshow]PHP反序列化(未完)

时间2023-04-16 16:36:01发布访客分类JAVA浏览814
导读:WEB255这题可以看出,是从cookie处触发了反序列化。只需要$isVip是True的状态,vipOneKeyGetFlag( 即可返回flag 注意,由于此处是从cookie处触发,所以payload需要url加密<?php c...

WEB255

这题可以看出,是从cookie处触发了反序列化。只需要$isVip是True的状态,vipOneKeyGetFlag()即可返回flag 注意,由于此处是从cookie处触发,所以payload需要url加密

?php
class ctfShowUser{
    
    public $isVip=true;

}
    
    $a=new ctfShowUser();
    
    echo urlencode(serialize($a));
    
?>

WEB256

该题多了个对username和password值的对比

所以,我们只需要增加个通过反序列化修改他们值的操作便好

WEB257

首先,我们知道__construct()函数会被new调用,所以这里我们可以修改其调用的函数,修改至backDoor().并修改$code的值来进行反序列化攻击。 所以,这里我们仅需要保证username和password不为空就够执行该后门了(后面我又发现当cat flag.php时不被执行,所以利用tac进行绕过)

WEB258

/[oc]:\d+:/i

这个正则的意思就是。匹配第一个是0或c,第二个字符是:,第三个字符跟随着数字的这种形式

\d:  匹配一个数字字符。等价于 [0-9]。
 +:  匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {
1,}
    。
/i:  表示匹配的时候不区分大小写

所以说如果要绕过这个正则,我们可以把0:数字这种形式改成0:+数字

放一个加号可以直接退出序列处理,从而绕过正则匹配。 详情可以参考https://www.phpbug.cn/archives/32.html

WEB260

额。这题不知道有什么意义

WEB261

在php7.4.0开始,如果类中同时定义了 __unserialize() 和 __wakeup() 两个魔术方法,则只有 __unserialize() 方法会生效,__wakeup() 方法会被忽略

__invoke()则要在将对象当做方法来使用才能触发,__sleep()则是被serialize调用,所以也可以忽略不计。 所以现在只需要梳理下图即可

$this->
    code==0x36d

由于这是双==,即php弱类型,所以只要传递的是877跟上字母即可

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

php对象函数加密序列化

若转载请注明出处: [ctfshow]PHP反序列化(未完)
本文地址: https://pptw.com/jishu/3368.html
Java基础入门教程-基础语法 emlog系统getshell的教程(带剧情)

游客 回复需填写必要信息