GEEK-2018之隐藏在混乱之中的绝密情报 writeup

题目如上

打开题目后发现,提示robots

随后提示又需要改一改名字

修改文件名为humans.txt之后发现

 有个备份文件,直接访问www.zip就可以下载了

下载打开后如下:

 在其中看到了unserialize和两个魔法函数

可以联想到是反序列化漏洞

    __construct()当一个对象创建时被调用

    __destruct()当一个对象销毁时被调用

    __toString()当一个对象被当作一个字符串使用

    __sleep() 在对象在被序列化之前运行

    __wakeup将在反序列化之后立即被调用

 观察代码,__construct函数里有getflag();

所以我们就只需要把Daedalus类实例化就行了

而要想实例化,就得调用Mang0类中的__wakeup

思路就出来了,我们可以构造一个序列化后的Mang0,当作message参数传入进去

然后unserialize会将他反序列话,同时调用Mang0中的__wakeup函数

payload:O:5:"Mang0":1:{s:7:"message";s:14:"hello_new_geek";}

 得到flag

原文地址:https://www.cnblogs.com/wh4am1/p/9959910.html