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文件读取相关推荐

  1. linux 文件读取 监控,linux 文件系统的监控

    完整性检查是HIDS的重要组成部分之一,linux下做完整性检查的思路有3个 1.哈希对比 2.签名校验 3.inotify 方法有2个: A.定期检测,例如通过cron或程序内置计时器 B.实时检测 ...

  2. linux文件读取程序,Linux系统编程:文件的读取写入

    一.read系统调用 一旦有了与一个打开文件描述相关连的文件描述符,只要该文件是用O_RDONLY或O_RDWR标志打开的,就可以用read()系统调用从该文件中读取字节 函数原型: ssize_t ...

  3. Linux文件读取操作:read函数的使用

    read函数作用:读取文件内容,读取打开/创建(open)文件中写入(write)的内容. 包含的头文件: #include <unistd.h> 函数原型: ssize_t read(i ...

  4. linux系统读取第二个盘的数据,磁盘及文件系统管理—第二篇

    挂载配置文件 每行定义一个要挂载的文件系统及相关属性 使用mount -a挂载/etc/fstab文件中所定义的文件系统 配置文件格式: 一共分为6个字段: 1.要挂载的设备:指定挂载设备 可指定设备 ...

  5. linux判断文件写入完毕,linux文件编程——系统调用(打开、写入、读取、访问判断)...

    linux文件编程有两个方法:1.linux系统调用 2.C语言函数库 前者依赖的是linux系统,后者独立于操作系统而存在,不依赖于任何操作系统,因此,在不同的操作用使用C语言函数库的方法是一样的. ...

  6. Linux文件写入读取与关闭(二)

    文件的写入 //文件写入所需的头文件 #include <unistd.h> write() 文件写入函数 //write()函数原型 ssize_t write(int fd, cons ...

  7. linux服务器上的项目读取本地文件,java访问linux服务器读取文件路径

    java访问linux服务器读取文件路径 内容精选 换一换 通过ADC将文件传输到Host.参见准备环境完成环境配置.以运行用户登录安装Toolkit组件的服务器.执行命令,将A.java文件传输到H ...

  8. linux c 读取目录及其子目录下所有.jpg文件的文件名(无后缀)

    此程序用来生成<yolo v2中VOC数据生成labels所需的图片文件名文档>train.txt linux c 读取目录及其子目录下所有.jpg文件的文件名:   http://www ...

  9. linux php读取mpp文件

    我的上一篇是本地PHP读取mpp文件,这篇写的就是linux上php读取mpp文件, 我在前边也说过在linux上部署JavaBridge.jar的方式,可以去翻看一下 一开始我也是按照我上一篇的方式 ...

最新文章

  1. 好的 blog 整理
  2. python测试rabbitmq的消息收发
  3. 宋祖儿面对粉丝不停撩头发,手上的书本亮了,是要转行当程序员?
  4. Google Gears 体验(2):本机 web 服务器
  5. 引入JQuery提示:Uncaught ReferenceError: $ is not defined
  6. php中插入表格 标签,PHP_HTML中的表格元素,一,table标签。tablegt - phpStudy
  7. Java 多线程(一) 基础知识与概念
  8. Guns根据条件查询数据_入门试炼04
  9. 网页中显示xml,直接显示xml格式的文件
  10. 华为公开“实现汽车中电子控制功能的系统”相关专利
  11. 【Java并发编程】之十六:深入Java内存模型——happen-before规则及其对DCL的分析(含代码)...
  12. Atitit 下推自动机﹙PDA﹚说明书 目录 1. 概念组成与原理成分 1 2. 性状 1 3. 适用场景 主治 适应症 1 3.1. 所有场景()。 1 3.2. 语法解析 构建ast 2 3.
  13. java中除数时刻0的异常_java中除数为0时出现的异常情况
  14. 物联网的概念、分层及关键技术
  15. 计算机课件制作教程ppt,电脑制作ppt详细步骤_新手制作ppt详细步骤图文教程
  16. matlab中如何打出心,如何在MATLAB中再现这个心形网格?
  17. 阿里云国际站有什么优势吗?
  18. java获取时间下周几的时间
  19. 网站建设基础-使用if和switch分别输出今天为周几
  20. 【职场思考】没听过的22条技术大牛的建议

热门文章

  1. 一个小软件公司的催款书
  2. 数商云:数字化供应链系统搭建,赋能企业实现物流供应链的优化升级
  3. 改进遗传算法 (IGA) 的自抗扰控制器 (ADRC) 学习笔记
  4. 计算机考研调查报告,最新2020全国研究生调查报告出炉!21考研人一定要看!
  5. centos7.2 bt面板安装redis一些注意事项
  6. 电信运营商全渠道预售苹果6s手机
  7. 上帝视角,什么是生态思维(上)
  8. SpringBoot(23) 集成socket.io服务端和客户端实现通信
  9. 各种塑料材质说明,哪些可以加热,哪些可以放入微波炉
  10. 黄永玉谈音乐与人生:我曾是张艺谋“伯乐”