记一次初学PHP反序列化

0x00 直接进入状态

刚开始学习反序列化,此贴为记录初学的入门级反序列化的CTF题

此题为Bugku的一道Web题,考点是反序列化和PHP的基本知识


该题的标题为:点login咋没反应

进入靶场之后,可以看到Login按钮是一个摆设,并没有提交功能

右键查看源代码,只能看到一个css文件,点开看一下
第一行就是一个注释,提示我们在Url后面添加?19737
添加?19737之后,显示了源码
这里我们只看PHP代码

<?php  
    error_reporting(0);  
    $KEY='ctf.bugku.com';  
    include_once("flag.php");  
    $cookie = $_COOKIE['BUGKU'];  
    if(isset($_GET['19737'])){  
        show_source(__FILE__);  
    }  
    elseif (unserialize($cookie) === "$KEY")  
    {     
        echo "$flag";  
    }

0x01 逐步分析

$KEY变量为

ctf.bugku.com

Include_once引用了flag.php文件(flag就在其中)

$cookie = $_COOKIE['BUGKU']

这里通过从COOKIE获取参数,Cookie的值为BUGKU,最后赋值给cookie下面进行判断,如果GET获取了19737参数的话就显示源代码,否则再判断,把$cookie进行反序列化,并且要与$KEY的值和类型相等,就可以输出flag了。

0x02 思想

首先,我们已经知道了$KEY的值,所以我们只需要将

ctf.bugku.com

进行序列化,然后把提交方式改成Cookie提交就可以了

代码为:

<?php  
    $key = 'ctf.bugku.com';  
    $a = serialize($key);  
    echo $a;  
?>

serialize()函数是将对象序列化成字符
unserialize()函数是字符反序列化成对象

得到反序列化结果

s:13:"ctf.buku.com

我们使用Burp抓包,修改cookie值,即可看到flag

这里有个小坑


这里我们提交了还是没有显示flag,是因为下面使用的是elseif,因为我们请求的时候加上了?19737所以他不会往下进行判断,我们把?19737去掉就可以了
这里注意Cookie的提交格式为:

Cookie:BUGKU=s:13:”ctf.buku.com”;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

巡安似海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值