• CTF题-http://120.24.86.145:8002/flagphp/:Bugku----flag.php


    今天做了一道关于序列化的题目,收益颇多,愉快地开始。
    首先,提示了“hint”,所以尝试加入hint参数。这儿没啥好说的,最后hint=1显示了重点内容。如下图所示
    没错,是金灿灿的网页代码,开心,仔细分析。
    代码分析
    <?php
    error_reporting(0);                             //不提示警告信息
    include_once("flag.php");
    $cookie = $_COOKIE['ISecer'];          //获取cookie“ISecer”信息存至$cookie
    if(isset($_GET['hint'])){                       //一条件表示hint值不为空则显示网页源代码
        show_source(__FILE__);
    }
    elseif (unserialize($cookie) === "$KEY")        //二条件表示$cookie的反序列化值为$KEY则返回flag。这是重点咩
    {   
        echo "$flag";
    }
    else {                                                  //三条件表示返回源代码
    ?>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Login</title>
    <link rel="stylesheet" href="admin.css" type="text/css">
    </head>
    <body>
    <br>
    <div class="container" align="center">
      <form method="POST" action="#">
        <p><input name="user" type="text" placeholder="Username"></p>
        <p><input name="password" type="password" placeholder="Password"></p>
        <p><input value="Login" type="button"/></p>
      </form>
    </div>
    </body>
    </html>
     
    <?php
    }                                                         //最后,为$KEY赋值  这儿只是起到了迷惑作用,它不会对前面的条件判断有任何影响,前面的$KEY值为空666
    $KEY='ISecer:www.isecer.com';
    ?>
     
    愉快地分析完代码,指导关键在二条件。详细分析,$KEY值为空,则$cookie应为空字符串的序列化值,即COOKIE中的ISecer应为空字符串的序列化值。
     
    分析到这里,我们明白,是时候在包中的cookie添加此字段值啦-。-
     
    方法如下:
    在百度到的PHP序列化工具中输入 "",生成序列化后的值 s:0:"";  。如下图所示
    输入原网址http://120.24.86.145:8002/flagphp/   ,使用burpsuite拦截数据包,在COOKIE中添加此字段信息。如下图所示
    添加后在【Raw】中可见结果,这也指明了在【Raw】中直接添加cookie的方法-。-如下图所示
    好嘞,愉快地点击【Go】。
    结果出来了,开心-。-如下图所示
     
    我学会了PHP序列化和反序列化,并且第一次亲手添加了Cookie,嗯,很棒-。-
    PHP序列化与反序列化:所有php里面的值都可以使用函数serialize()来返回一个包含字节流的字符串来表示。unserialize()函数能够重新把字符串变回php原来的值。 序列化一个对象将会保存对象的所有变量,但是不会保存对象的方法,只会保存类的名字。
     
     
  • 相关阅读:
    Python-深浅拷贝
    Python-生成式
    Python-手写web应用
    Python-为什么产生了GIL锁?
    Python-文件处理
    Python-线程
    10大网站设计错误 足以毁掉你的网站【转】
    [转]ASP.NET验证发生前无法调用 Page.IsValid。应在 CausesValidation=True 且已启动回发的控件
    jquery操作字符串常用方法总结及工作代码
    C#中的序列化和反序列化是什么、有什么作用、使用方法详解
  • 原文地址:https://www.cnblogs.com/HYWZ36/p/10295434.html
Copyright © 2020-2023  润新知