WEB35(序列化和反序列化)

之前学java时就了解过java序列化,即把java对象转变为字节流。序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。

总之,序列化作用就是方便传输和存储,将不同环境下的数据转换为一种公共的大家都认识的数据格式。

先不深究序列化了,应该会涉及到操作系统,编译原理等知识。

先浅浅的,形象化的认识一下php中的序列化和反序列化吧

先说结论php序列化使得php中的所有数据类型都可以转换为一种特定的字符串,不必直接传输该数据,而是传递序列化后的该字符串,接收端根据该字符串,即可在其端还原出数据。这样,加快了速度,节省了空间

php中的序列化函数为: serialize(),返回值为字符串。反序列化函数为unserialize(),接受字符串类型的参数。

(以数组为例:数组对象本身在内存中的时候也是比特流,假设长度为100比特,那么我们序列化为字符串后,假设比特长度减少为了10,这样存储和传输的时候只传这个10个比特即可,而不是传100个比特,因而节省了空间,加快了速度,有种数据压缩的味道在里边。)

<?php
$a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut');// a,b,c是键,a['a'] = 'Apple'
 
//序列化数组
$s = serialize($a);
echo $s;
//输出结果:a:3:{s:1:"a";s:5:"Apple";s:1:"b";s:6:"banana";s:1:"c";s:7:"Coconut";}
?>

下面解释下序列化后的字符串结构:
以上边为例子:a表示array,3表示数组长度,{}表示值,s表示字符串,1表示该串的长度.


Web35:
进去如下
在这里插入图片描述

查看源代码:

在这里插入图片描述
发现admin.css可以点进去,查看,发现了提示。

在这里插入图片描述
尝试:

在这里插入图片描述传输变量5351,但值为空。
得到代码提示,可以看出是序列化相关题目。

很简单,就是利用phpCOOKIE传输一个字符串,该字符串可以利用反序列化函数还原为’ctf.bugku.com’。
所以构造payload为BUGKU=s:13:“ctf.bugku.com” ,(最后必须是双引号)。

另外“$key”就是该变量的值,’ $key’则是 $key。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值