在这个例子中,我们利用他对序列化后的值,进行增加字符串长度的过滤,让他填充双引号内的字符串达到所描述的44这么长,使得后面的s:3:"age";s:2:"35";不被吞噬,让这部分代码逃逸出吞噬,又让他提前遇到}忽略后面的一些不需要的字符串,结束反序列化 。
文章插图
可以看到,我们构造的payload是成功修改了age,这里是数组,在对对象操作时也是一样的 。
刚刚说到吞噬,在增加字符串的题目中,我们是利用题中的增加操作,阻止他进行向后吞噬我们构造的代码,而在字符减少的过程中,我们也是利用这个操作 。
关键字符减少
有了前面”吞噬“的一种解释,那么字符串减少就很好说了,同样的也是因为替换的问题,使得参数可以让我们构造payload
文章插图
这里的错误是因为s:5:"zddo"长度不够,他向后吞噬了一个双引号,导致反序列化格式错误,从而报错,我们要做的就是让他往后去吞噬一些我们构造的一些代码 。以下将具体实施 。
同样的,我们这里以修改age为例,不同的是与增加字符串传值的地方有些许不同,我们构造的值是有一部分让他吞噬的
先正常传递值序列化出我们需要修改的值,我们需要的是将age:13改为35
文章插图
取出";s:3:"age";s:2:"35";}这就是我们需要构造的,接着继续将这部分内容重新传播,序列化出来,得到下面的结果
文章插图
选中部分就是我们构造出来,他需要吞噬的代码,s:22:""这个双引号里面我们还有操作的空间,用来补齐字符串长度,接着就是计算我们自己所需要吃掉的字符串长度为18,根据过滤,他是将两个o变成一个,也就是每吃掉一个字符,就需要有一个oo,那我们需要吃掉的是18个长度,那么我们就需要18个oo,在吞噬结束之后我们的格式又恢复正确,使得真正的字符s:3:"age";s:2:"35";逃逸出来,成功加入反序列化
文章插图
这就是我们最终的payload,可以看到下图成功修改了
文章插图
例题有了以上基础,就可以做题了,简单的开始入手
安恒四月(字符减少)
<?phpshow_source("index.php");function write($data) {return str_replace(chr(0) . '*' . chr(0), '', $data);}function read($data) {return str_replace('', chr(0) . '*' . chr(0), $data);}class A{public $username;public $password;function __construct($a, $b){$this->username = $a;$this->password = $b;}}class B{public $b = 'gqy';function __destruct(){$c = 'a'.$this->b;echo $c;}}class C{public $c;function __toString(){echo file_get_contents($this->c);return 'nice';}}$a = new A($_GET['a'],$_GET['b']);//省略了存储序列化数据的过程,下面是取出来并反序列化的操作$b = unserialize(read(write(serialize($a))));
看到上面的代码,很明显,我们需要利用file_get_contents();读取文件,将flag读取出来,但是他是个__toString()方法,我们就要让他触发这个方法,当反序列化出对象后,被当作字符串使用时,就可以触发,那我们就需要写一个链,与此同时我们也要知道字符串被删减了几个字符function write($data) {return str_replace(chr(0) . '*' . chr(0), '', $data);}function read($data) {return str_replace('', chr(0) . '*' . chr(0), $data);}
看这一部分即可了解到,如果发现不可见字符*不可见字符,字符串就会增多,接着又将的6个字符变成3个字符不可见字符*不可见字符,我们自己是不会去写入不可见字符的在这道题中,相反可以故意写入使得字符串减少,通过计算逃逸字符,读取flag文件题目中序列化的是对象$a,里面有两个参数,username和password,我们要传入的也是这两个参数的值,所以我们构造的payload,应该是往password传我们构造好的字符,而在username传入的为计算好的个数,
按照流程来,先写一个链子,某些参数先随便写
文章插图
推荐阅读
- PHP微服务实践——手把手教你搭建PHP微服务
- PHP Curl的简单使用
- 孕初期胃反酸吃什么食物好 孕妇胃酸反胃吃什么食物好
- 反恐精英ol进入游戏不全屏 和平精英为什么不能全屏
- ?老年人反复鼻出血
- 内马尔|大反转,内马尔突爆高调回击!球迷嘘声一片:职业生涯就这样了
- 根据判断PC浏览器类型和手机屏幕像素自动调用不同CSS
- 苹果反光膜是什么材料做的 果园反光膜的好处和坏处
- 网友热议|拳王泰森飞机上暴揍醉酒男引围观 被反复骚扰:网友感慨真是惨
- Java反射有多强?它拥有这五大神奇功能