千家信息网

php序列化函数漏洞----unserialize()函数

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,unserialize()函数概念unserialize() 对单一的已序列化的变量进行操作,将其转换回 PHP 的值。返回的是转换之后的值,可为 integer、float、string、array
千家信息网最后更新 2026年10月31日php序列化函数漏洞----unserialize()函数

unserialize()函数概念

unserialize() 对单一的已序列化的变量进行操作,将其转换回 PHP 的值。返回的是转换之后的值,可为 integer、float、string、array 或 object。如果传递的字符串不可解序列化,则返回 FALSE。与之相对的函数serialize()序列化函数。

我们看一个题目
题目:天网管理系统,链接: http://ctf5.shiyanbar.com/10/web1/

1、进入题目查看网页源码


这行提示比较霸气,直接让你判断你的用户名的md5值是不是等于0,这里利用php处理MD5哈希缺陷,遇到哈希值是0e开头的字符串被当做0,QNKCDZO就是这样的字符串。推荐网站;https://www.cnblogs.com/Primzahl/p/6018158.html.
2、输入这个特殊字符串,查看一下

3、给了一个路径,查看一下子

这里又得到一个源码,里面关键的部分说的就是unserialize()函数。从源码中很明显可以看出,post传输的username值应该是一个数组。这样才能分别得出user,pass的值。
我们直接给出数组是不行的,因为unserialize()函数需要处理序列化之后的字符串,然后将其反序列化为php的值。所以我们输入的值应该是经过序列化函数serialize()处理后的数组,然后交由unserialize()函数去处理。
编写序列化字符串脚本:
$a=array("user" => true,"pass" => true) //或false
$b=serialize($a)
echo $b
?>
这里要记着数组的值要根据提示用布尔值,不然不会得到flag
最后将得到的结果填入文本框便可以拿到flag。

推荐一篇文章:https://blog.csdn.net/cnbird2008/article/details/8664026

函数 序列 字符 字符串 数组 处理 源码 题目 就是 哈希 推荐 提示 输入 不行 明显 特殊 霸气 关键 变量 天网 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳九邦互联网科技有限公司 互联网是不是新科技 互联网科技公司官网 科技互联网公司logo 上海万想互联网科技 科技互联网的估值 汽车互联网创新科技园 互联网科技创新服务 互联网软件和科技 杭州壁岐互联网科技有限公司 健康食品互联网创新科技园项目 互联网科技人工智能实验室 科技类公司包括互联网吗 用友工业互联网科技发展 科技赋能视角下互联网保险发展 皮皮虾互联网科技有限公司 美国互联网科技公司 互联网科技数字货币 银川新华互联网科技学校是国营吗 六子台科技互联网展会 互联网科技行业发展 科技与互联网发展 海南购全球互联网科技 深圳国际航运科技和互联网 昭通云南众福互联网科技有限公司 互联网与医疗科技 互联网金融科技公司的优势 江苏互联网智能科技软件 广东鹅鹅鹅互联网科技有限公司 杭州融税互联网科技有限公司
0