反序列化字符串逃逸(字符变少)
2021/4/20 10:27:09
本文主要是介绍反序列化字符串逃逸(字符变少),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
先上源码
<?php function change($str){ return str_replace("xx","x",$str); } $a=$_GET['a']; $b=$_GET['b']; class ddd{ public $a; public $b; public function __construct($d,$f) { $this->a=$d; $this->b=$f; } } $dd=new ddd($a,$b); $q=serialize($dd); echo '过滤前'.$q ; echo "<br>"; echo '过滤后:'.change(serialize($dd)); $c= change(serialize($dd)); echo "<br>"; print_r( unserialize($c)); ?>
先来看一下正常序列化。
我们把b的序列的复制下来";s:1:“b”;s:5:“admin”;},这里从“开始是因为正好可以跟前面的”闭合后面会说到。
我们再来看看过滤后的序列化。
红框框这里明显少了很多xx,这里就不符合序列化逻辑,过滤后由于少了23个xx所以他会吃掉后面23个字符。
第一部分是原来的23个字符,第二部分是被吃掉的字符串,我们可以看到他会吃掉我们输入的";s:1:",很显然更不符合序列化逻辑,这个时候我们可以在";s:1:“b”;s:5:“admin”;}前面多加几个字符串从而避免被吃掉。
可以看到添加完字符串,蓝色部分正好是46位且后面的"刚好跟46后面的"闭合形成一个正常的序列化。
这样我们就能正常的反序列化了,原理的化要多动手试试。
这篇关于反序列化字符串逃逸(字符变少)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-01后台管理开发学习:新手入门指南
- 2024-11-01后台管理系统开发学习:新手入门教程
- 2024-11-01后台开发学习:从入门到实践的简单教程
- 2024-11-01后台综合解决方案学习:从入门到初级实战教程
- 2024-11-01接口模块封装学习入门教程
- 2024-11-01请求动作封装学习:新手入门教程
- 2024-11-01登录鉴权入门:新手必读指南
- 2024-11-01动态面包屑入门:轻松掌握导航设计技巧
- 2024-11-01动态权限入门:新手必读指南
- 2024-11-01动态主题处理入门:新手必读指南