【SWPUCTF部分题目解答 】

本文讲述了在SWPUCTF2022新生赛中,参赛者如何通过分析PHP代码的ez_unserialize和1z_unserialize题目,利用反序列化漏洞绕过安全机制,构造payload获取flag的过程。涉及到了魔术常量、构造函数、析构函数等概念的应用。
摘要由CSDN通过智能技术生成

[SWPUCTF 2022 新生赛]1z_unserialize

[SWPUCTF 2022 新生赛]ez_ez_unserialize

[SWPUCTF 2021 新生赛]ez_unserialize

[SWPUCTF 2022 新生赛]1z_unserialize

1.打开题目查看源码。
在这里插入图片描述
2.分析一下,进行反序列化时,会让 a 的值为 a的值为 a的值为lt
然后执行函数,且参数值为$lly
payload
在这里插入图片描述
得到flag。
在这里插入图片描述

[SWPUCTF 2022 新生赛]ez_ez_unserialize

1.打开是段PHP代码。在这里插入图片描述
2.创造类x,定义了一个魔术常量x为_FILE_(当前文件名),又定义了几个函数,construct函数让x类中的x赋值,wakeup让x重新赋值为_FULE_,destruct函数高亮x常量,如果传参x存在反序列化,否则输出

看到提示flag在fllllllag.php中,将代码复制,删掉没有的,加上x序列化。
在这里插入图片描述
3.由于要绕过wakeup函数,只要序列化的中的成员数大于实际成员数,即可绕过

O:1:“X”:1:{s:1:“x”;s:13:“fllllllag.php”;}
修改为O:1:“X”:2:{s:1:“x”;s:13:“fllllllag.php”;}即可绕过
在这里插入图片描述
得到flag。

[SWPUCTF 2021 新生赛]ez_unserialize

1.打开链接出现此画面。
在这里插入图片描述
2.右键点击查看源码。
在这里插入图片描述
在最下部出现Disallow,使用robots.txt即以下操作。
在这里插入图片描述
3.在robots.txt里面我们找到了一个路径 /cl45s.php,打开之后是PHP源码。
在这里插入图片描述
在这里插入图片描述
4.简单审一下,构造pop链:

链尾(就是最终我们想要利用的地方),在echo $flag 并且include了flag.php

往上看,发现只需要满足 ($this->admin === “admin” && $this->passwd === “ctf”)

即admin=“admin”,passwd=“ctf”

再往上看,发现执行这条语句我们需要触发__destruct()函数

__destruct是析构函数,会在对象的所有引用被删除或者当对象被显式销毁时自动执行,比如new完一个对象,当创建完成之后就不引用了,如果有赋值指向就会立马丢弃,触发destruct函数。

这里还有一个__construct()构造函数,它是在实例化一个对象(即new时)会自动调用。
上脚本:
在这里插入图片描述
得到 O:4:“wllm”:2:{s:5:“admin”;s:5:“admin”;s:6:“passwd”;s:3:“ctf”;}
5.题目中提示要以get方式给p传参,并且会对传入参数进行反序列化操作

因此我们将序列化后的内容传给p即可

构造payload:

?p=O:4:“wllm”:2:{s:5:“admin”;s:5:“admin”;s:6:“passwd”;s:3:“ctf”;}
在这里插入图片描述
传入后直接回显flag。

  • 32
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值