03攻防世界-unserialize3

根据题目可以看出,这是个反序列化的题目

打开网址观察题目可以看到这里是php的代码,那么也就是php的反序列化

本题需要利用反序列化字符串来进行解题,根据源码提示我们需要构造code。 序列化的意思是:是将变量转换为可保存或传输的字符串的过程。

反序列化就是将字符串在转化回变量。这种方式能轻松的存储和传输数据,但反序列化有一个漏洞,通过这个漏洞我们可以跳过反序列化操作的执行。这样就不会执行后面的exit函数。 但是原代码中并没有序列化所以我们无法进行反序列化,所以我们需要添加一个序列化来将我们的变量变成字符串。在php中序列化和反序列化函数分别为serialize,__wakeup。下面就要将代码补充完整(即添加序列化)

复制代码
<?php
class xctf{                     //定义一个名为xctf的类
  public $flag = '111';         //定义一个公有的类属性
  public function __wakeup(){   //定义一个公有的类方法__wakeup(),用于输出bad
  exit('bad requests');          //退出当前脚本
  }
}
$a= new xctf();          //使用new运算符来实例化该类(xctf)的对象 a
print(serialize($a));     //输出被序列化的对象
?>

在ps中执行代码后结果是

但是输入这个的时候,我们发现

对于这个字符串我们可以看到它有一个变量值("xctf":后面的1)。而对于反序列化来说如果字符串中的变量的数目和真实的数目不一样那么__wakeup会出现错误,我们就造成了反序列化漏洞,所以我们在填写字符串时将变量值的数目从1改成2,输入网页网址后即可获得flag。改成3或者4都是可以的。

相关推荐
努力的lpp2 天前
【ctf常用备用文件名字典】
web安全·网络安全·ctf
m0_738120724 天前
sqli-labs过关解析(17- 20附带源码解析)
数据库·sql·web安全·php·ctf·安全性测试
ZAEQgyKFs4 天前
龙讯lt6911uxc,lt9611uxc资料,有源码固件,支持4k60,支持对接海思3519...
phpstorm
Pure_White_Sword5 天前
bugku-reverse题目-NoString
网络安全·ctf·reverse·逆向工程
饮长安千年月5 天前
玄机-工控题
ctf·s7·流量分析·西门子协议
饮长安千年月6 天前
一带一路暨金砖国家技能发展与技术创新大赛网络安全防护与治理-Win基线加固
网络安全·ctf·金砖国家技能发展与技术创新大赛·一带一路
饮长安千年月6 天前
一带一路暨金砖国家技能发展与技术创新大赛网络安全防护与治理-Linux 安全基线加固
web安全·ctf·金砖国家技能发展与技术创新大赛·网络安全防护与治理
饮长安千年月6 天前
一带一路暨金砖国家技能发展与技术创新大赛网络安全防护与治理-Linux应急响应手册
linux·运维·web安全·ctf·应急响应
Jerry_Gao9216 天前
【CTF】【ez-upload】FrankenPHP(v1.11.1)Unicode路径解析漏洞
安全·php·ctf·frankenphp
Jerry_Gao9217 天前
【CTF】【ez-rce】无字母数字绕过正则表达式
正则表达式·php·ctf