MOCTF PUBG 反序列化+文件备份+linux文件读取
MOCTF-PUBG
- 简介:
- 考点:
- 题目总览:
简介:
这道题考核了很多ctf的有关知识点,我也纠结了好久才可以彻底明白,今天发出来自己的解题思路和大家分享一下。。。
考点:
php反序列化漏洞,文件备份以及linux文件读取的有关知识
不太了解php反序列化漏洞的可以查看这篇博客:
https://www.freebuf.com/column/161798.html
题目总览:
好,我们开始解题,首先右键审查源码,发现有什么新的东西…
发现这是一个文件的备份名称,我们赶快访问一下。。
下载之后审查源码
上面发现包含了一个新文件class.php和当pos等于school时的反序列化函数,因此,我们尝试用同样的方法下载了class.php
发现了3个php魔法方法,没有基础的朋友可以先看一下我之前的总结附带绕过__wakeup魔法方法的代码,,,
还有个waf.php,但是奈何暂时没有方法读取。。。。
先擦干泪水,现在我们来逐个审计这些函数的内容:::
__wakeup()函数在其所在对象反序列化的时候自动调用。所以如果我们构造sheldon对象并反序列化后,我们的对象内部就会自动调用__wakeup()函数,他会把序列化bag的内容转换为nothing,weapon的内容转化为kar98K,如果我们不能绕过这个函数,那一定就不可以继续判断执行
这个函数意思是传入一个参数b,而b为一个函数并执行这个函数,用作后面的使用。。。
本篇最重要的函数诞生了,这是我们这次使用最重要的函数,__call魔法函数,__call()有两个参数,第一个参数会接受不存在的方法名,第二个参数则以数组的方式接受不存在方法的多个参数。
然后进行函数内部的判断,首先,它会把method分割成2个部分,先验证是否存在.//classmethod分割成2个部分,先验证是否存在.//classmethod分割成2个部分,先验证是否存在.//classfile[0].php的存在性,然后执行 system("php .//class//method.php"),这时候我们就可以构造这样的∗∗method.php"),这时候我们就可以构造这样的**method.php"),这时候我们就可以构造这样的∗∗method=win.php|cat class/flag,从而满足if的条件,又可以执行的内容为system(“php .//win.php|cat class/flag.php”)**切记传参数的顺序传递反了就凉了。。。。
这是我们最后必定会执行的函数,这里面也有条件:
1,先对成员执行waf函数(奈何看不了waf.php,很多东西都过滤了也不曾知道,有点尴尬…)。
2,然后if中条件满足的话,对bag成员执行Get_air_drops函数,否则就die输出一行字。
然后我们来构建payload:::
http://120.78.57.208:6001/?LandIn=school&pubg=O:7:“sheldon”:4:{s:3:“bag”;s:27:"//win.php| cat ./class/flag";s:6:“weapon”;s:3:“AWM”;}
或者这样:
http://120.78.57.208:6001/?LandIn=school&pubg=O:7:“sheldon”:4:{s:6:“weapon”;s:3:“AWM”;s:3:“bag”;s:27:"//win.php| cat ./class/flag";}
就是反着传了一下。。。
然后右键查看源码 就可以找到flag》》》》》》》》
moctf{Try_Learn_PhP_h4rder_wow}
MOCTF PUBG 反序列化+文件备份+linux文件读取相关推荐
- linux 文件读取 监控,linux 文件系统的监控
完整性检查是HIDS的重要组成部分之一,linux下做完整性检查的思路有3个 1.哈希对比 2.签名校验 3.inotify 方法有2个: A.定期检测,例如通过cron或程序内置计时器 B.实时检测 ...
- linux文件读取程序,Linux系统编程:文件的读取写入
一.read系统调用 一旦有了与一个打开文件描述相关连的文件描述符,只要该文件是用O_RDONLY或O_RDWR标志打开的,就可以用read()系统调用从该文件中读取字节 函数原型: ssize_t ...
- Linux文件读取操作:read函数的使用
read函数作用:读取文件内容,读取打开/创建(open)文件中写入(write)的内容. 包含的头文件: #include <unistd.h> 函数原型: ssize_t read(i ...
- linux系统读取第二个盘的数据,磁盘及文件系统管理—第二篇
挂载配置文件 每行定义一个要挂载的文件系统及相关属性 使用mount -a挂载/etc/fstab文件中所定义的文件系统 配置文件格式: 一共分为6个字段: 1.要挂载的设备:指定挂载设备 可指定设备 ...
- linux判断文件写入完毕,linux文件编程——系统调用(打开、写入、读取、访问判断)...
linux文件编程有两个方法:1.linux系统调用 2.C语言函数库 前者依赖的是linux系统,后者独立于操作系统而存在,不依赖于任何操作系统,因此,在不同的操作用使用C语言函数库的方法是一样的. ...
- Linux文件写入读取与关闭(二)
文件的写入 //文件写入所需的头文件 #include <unistd.h> write() 文件写入函数 //write()函数原型 ssize_t write(int fd, cons ...
- linux服务器上的项目读取本地文件,java访问linux服务器读取文件路径
java访问linux服务器读取文件路径 内容精选 换一换 通过ADC将文件传输到Host.参见准备环境完成环境配置.以运行用户登录安装Toolkit组件的服务器.执行命令,将A.java文件传输到H ...
- linux c 读取目录及其子目录下所有.jpg文件的文件名(无后缀)
此程序用来生成<yolo v2中VOC数据生成labels所需的图片文件名文档>train.txt linux c 读取目录及其子目录下所有.jpg文件的文件名: http://www ...
- linux php读取mpp文件
我的上一篇是本地PHP读取mpp文件,这篇写的就是linux上php读取mpp文件, 我在前边也说过在linux上部署JavaBridge.jar的方式,可以去翻看一下 一开始我也是按照我上一篇的方式 ...
最新文章
- 好的 blog 整理
- python测试rabbitmq的消息收发
- 宋祖儿面对粉丝不停撩头发,手上的书本亮了,是要转行当程序员?
- Google Gears 体验(2):本机 web 服务器
- 引入JQuery提示:Uncaught ReferenceError: $ is not defined
- php中插入表格 标签,PHP_HTML中的表格元素,一,table标签。tablegt - phpStudy
- Java 多线程(一) 基础知识与概念
- Guns根据条件查询数据_入门试炼04
- 网页中显示xml,直接显示xml格式的文件
- 华为公开“实现汽车中电子控制功能的系统”相关专利
- 【Java并发编程】之十六:深入Java内存模型——happen-before规则及其对DCL的分析(含代码)...
- Atitit 下推自动机﹙PDA﹚说明书 目录 1. 概念组成与原理成分	1 2. 性状	1 3. 适用场景 主治 适应症	1 3.1. 所有场景()。	1 3.2. 语法解析 构建ast	2 3.
- java中除数时刻0的异常_java中除数为0时出现的异常情况
- 物联网的概念、分层及关键技术
- 计算机课件制作教程ppt,电脑制作ppt详细步骤_新手制作ppt详细步骤图文教程
- matlab中如何打出心,如何在MATLAB中再现这个心形网格?
- 阿里云国际站有什么优势吗?
- java获取时间下周几的时间
- 网站建设基础-使用if和switch分别输出今天为周几
- 【职场思考】没听过的22条技术大牛的建议
热门文章
- 一个小软件公司的催款书
- 数商云:数字化供应链系统搭建,赋能企业实现物流供应链的优化升级
- 改进遗传算法 (IGA) 的自抗扰控制器 (ADRC) 学习笔记
- 计算机考研调查报告,最新2020全国研究生调查报告出炉!21考研人一定要看!
- centos7.2 bt面板安装redis一些注意事项
- 电信运营商全渠道预售苹果6s手机
- 上帝视角,什么是生态思维(上)
- SpringBoot(23) 集成socket.io服务端和客户端实现通信
- 各种塑料材质说明,哪些可以加热,哪些可以放入微波炉
- 黄永玉谈音乐与人生:我曾是张艺谋“伯乐”