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原来的值。 序列化一个对象将会保存对象的所有变量,但是不会保存对象的方法,只会保存类的名字。
 
 

猜你喜欢

转载自www.cnblogs.com/HYWZ36/p/10295434.html