[SWPUCTF 2022 新生赛]1z_unserialize
destruct 函数在对象销毁时会自动调用,而且其中的代码会在函数调用时执行。unserialize($_POST[‘nss’]);执行完成后,这个通过 unserialize 重新创建的对象没有被任何变量引用,因此它将会被标记为不再需要,并最终会被 PHP 垃圾回收机制销毁。在对象被销毁的时候,destruct 会被自动调用。
所以我们可以通过构造一个恶意的序列化对象,将自定义的函数传递给 $lt 属性,然后将要执行的代码(或者指向一个恶意代码文件的路径)传递给 $lly 属性。当对象被序列化后再被反序列化时,destruct 方法会被自动调用,从而执行指定的恶意操作。
只要传参把a变成system();a变成system();this->lly变成ls或者cat就是一个简单的命令注入了
nss=O:3:"lyh":3:{s:3:"url";s:10:"NSSCTF.com";s:2:"lt";s:6:"system";s:3:"lly";s:9:"cat /flag";}
[SWPUCTF 2022 新生赛]ez_ez_unserialize
观察代码里面有一个wakeup函数当序列化字符串中表示对象属性个数的值大于实际属性个数时,就会跳过wakeup方法,将fllllllag.php序列化再将序列化的中的成员数大于实际成员数,即可绕过。
x=O:1:“X”:1000:{s:1:“x”;s:13:“fllllllag.php”;}
SWPUCTF 2021 新生赛]ez_unserialize
?打开题目居然是这样?什么鬼?看一下页面源代码
发现disallow,说明应该和robots有关。
Robots 协议(也称为爬虫协议、机器人协议等)的全称是 “网络爬虫排除标准”(Robots Exclusion Protocol),网站通过 Robots 协议告诉搜索引擎哪些页面可抓,哪些页面不能抓。
disallow就是爬虫不能搜索的所以我们去看看robots.txt
发现了这个按这个应该就是题目了,访问一下
复制源码,把不需要的部分注释掉,再补充序列化的代码,将admin和passwd的值改为触发if条件的值,即可得到payload