【HUBUCTF 2022 新生赛】checkin

题目

<?php
show_source(__FILE__);
$username  = "this_is_secret"; 
$password  = "this_is_not_known_to_you"; 
include("flag.php");//here I changed those two 
$info = isset($_GET['info'])? $_GET['info']: "" ;
$data_unserialize = unserialize($info);
if ($data_unserialize['username']==$username&&$data_unserialize['password']==$password){
    echo $flag;
}else{
    echo "username or password error!";

}

?>

思路

要解决这个问题,我们需要构造一个特殊的序列化数组,利用 PHP 松散类型比较的特性,使得无论$username$password的值如何修改,比较结果都为真。

分析

  1. 代码逻辑:通过反序列化info参数得到一个数组,检查其usernamepassword是否与当前脚本中的变量值相等。

  2. 松散比较(==):PHP 在松散比较时会将不同类型的数据转换后再比较。例如,如果数组中的 usernamepassword 的值是 true,而当前脚本中的password 的值是非空字符串,那么比较也会成立。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值