[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 :

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/277059.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Java+SpringBoot+vue实现图书借阅管理系统

基于JavaSpringBootvue实现图书借阅和销售商城一体化系统 &#x1f345; 作者主页 程序设计 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; 文章目录 基于JavaSpringBootvue实现图书借阅和销售商城一体化…

TikTok年度回顾:2023年的亮点时刻

2023年&#xff0c;TikTok再次成为全球关注的焦点&#xff0c;不仅延续了其独特的社交媒体魅力&#xff0c;还在创新、文化影响力等方面取得了一系列令人瞩目的亮点时刻。本文将深入探讨TikTok在2023年的重要事件、创新举措以及对社会的深远影响。 创新功能引领社交潮流 TikTok…

python使用xpath解析html

一、安装包 pip install lxml二、读取 1、读取解析出来多条 from lxml import etree# HTML 或 XML 文档示例 html_content <html><body><div><p>Paragraph 1</p><a href"#">Link 1</a></div><div><p&…

2023-12-29 服务器开发-Centos部署LNMP环境

摘要: 2023-12-29 服务器开发-Centos部署LNMP环境 centos7.2搭建LNMP具体步骤 1.配置防火墙 CentOS 7.0以上的系统默认使用的是firewall作为防火墙&#xff0c; 关闭firewall&#xff1a; systemctl stop firewalld.service #停止firewall systemctl disable fire…

python读取eps矢量图片

再利用Image读取时&#xff0c;提示报错&#xff1a; OSError: Unable to locate Ghostscript on paths 解决办法&#xff1a; 首先要安裝ghostscript软件&#xff1a;Ghostscript : Downloads 安装后记住安装路径&#xff0c;并找到bin的文件夹 之后在使用时&#xff0c;在代…

linux SHELL语句

shell编程 shell编程 一、初识shell 程序 语言 编程语言 自然语言 汉语 英语 计算机语言 c语言cjava php python go shell 编译型语言 c c java解释型语言 php python bash (不能闭源&#xff0c;开发难度低) 编译型语言:运行编译型语言是相对于解释型语言存在的&#xff…

TVS 管选型与 ESD 防护设计

文章目录 ESD 防护设计 TVS管的基础特性 TVS管的选型方法 TVS管布局细节 参考文献 ESD 防护设计 静电防护设计是让电路板外接的各类金属按钮开关在接触到外界空气放电或接触放电时&#xff0c;在这种瞬间出现的大能量注入到电路板后&#xff0c;能够通过某种设计好的通道泄…

Springboot整合Elastic-job

一 概述 Elastic-Job 最开始只有一个 elastic-job-core 的项目&#xff0c;定位轻量级、无中心化&#xff0c;最核心的服务就是支持弹性扩容和数据分片&#xff01;从 2.X 版本以后&#xff0c;主要分为 Elastic-Job-Lite 和 Elastic-Job-Cloud 两个子项目。esjbo官网地址 Ela…

【满分】【华为OD机试真题2023CD卷 JAVAJS】API集群负载统计

华为OD2023(C&D卷)机试题库全覆盖,刷题指南点这里 API集群负载统计 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: 某个产品的RESTful API集合部署在服务器集群的多个节点上,近期对客户端访问日志进行了采集,需要统计各个API的访问频次,根据热点信息在服务…

CRM诞生到现在历经了哪些发展阶段?CRM系统的五个关键节点

CRM管理系统从被发明到现在&#xff0c;历经多次迭代已经成为一个相对成熟的系统。企业可以靠它管理客户信息&#xff0c;提升盈利能力。今天就来介绍一下CRM的发展历程。 一、CRM系统的雏形 广义上的CRM系统其实可以追溯到古希腊时期。当时的商人靠书写记录自己与客户和合作…

亚马逊SEO是什么意思?亚马逊标题的SEO方法是什么?-站斧浏览器

亚马逊SEO是什么意思&#xff1f; 亚马逊SEO主要包括了对标题、描述、五点简介等元素的优化&#xff0c;以及评价和评论的管理等方面。下面将详细分析亚马逊SEO的相关内容&#xff0c;帮助卖家更好地理解和应用。 在亚马逊平台上进行SEO优化需要考虑以下几个方面&#xff1a;…

iPortal内置Elasticsearch启动失败的几种情况——Linux

作者&#xff1a;yx 文章目录 前言一、端口占用二、ES启动过慢三、磁盘占用过高&#xff0c;导致ES变为只读模式 前言 在Linux环境启动iPortal后有时会出现搜索异常的情况&#xff0c;如下截图&#xff0c;这是因为Elasticsearch&#xff08;以下简称“ES”&#xff09;没启动…

elasticsearch安装教程(超详细)

1.1 创建网络&#xff08;单点部署&#xff09; 因为我们还需要部署 kibana 容器&#xff0c;因此需要让 es 和 kibana 容器互联&#xff0c;所有先创建一个网络&#xff1a; docker network create es-net 1.2.加载镜像 采用的版本为 7.12.1 的 elasticsearch&#xff1b;…

日常知识点记录

1、Maven 中的dependencyManagement和dependency的区别 首先maven可以通过子模块依赖父模块的方式获得父模块的所有依赖&#xff0c;极大便利的提供了对项目以来的管理&#xff0c;但是在使用这种方式实现对依赖的管理时&#xff0c;子模块不可避免的会引入父模块中存在&#…

前端性能优化 将资源放到 linux 服务器上 提升访问效率

我们先远端连接服务器 然后服务器终端输入 mkdir 目录路径建出一个新的文件路径 回到我们自己的电脑 然后 在要缓存到服务器的文件目录下打开终端 输入 scp -r ./xidis.hdr 用户名 如果没设置用户名就是root服务器公网IP:/root/xhdr例如 scp -r ./xidis.hdr root1.113.266…

SpringBoot+AOP+Redis 防止重复请求提交

本文项目基于以下教程的代码版本&#xff1a; https://javaxbfs.blog.csdn.net/article/details/135224261 代码仓库: springboot一些案例的整合_1: springboot一些案例的整合 1、实现步骤 2.引入依赖 我们需要redis、aop的依赖。 <dependency><groupId>org.spr…

Docker - 镜像 | 容器 | 数据卷 日常开发常用指令 + 演示(一文通关)

目录 Docker 开发常用指令汇总 辅助命令 docker version docker info docker --help 镜像命令 查看镜像信息 下载镜像 搜索镜像 删除镜像 容器命令 查看运行中的容器 运行容器 停止、启动、重启、暂停、恢复容器 杀死容器 删除容器 查看容器日志 进入容器内部…

记一次修复外网无法访问vmware里面的虚拟机的网络端口的问题

发现一个奇怪的网络问题&#xff0c;vmware里一个程序的端口通过vmnat穿透出来&#xff0c;然后这个端口就能够通过局域网被其他机器访问&#xff0c;但是另一个网段就没法访问这个端口。使用主机上的其他程序使用开启同样的端口&#xff0c;另一个网段的机器却可以访问。我想不…

idea 如何快速拉取新分支

方式1 &#xff08;快捷键&#xff1a;CtrlShift~&#xff09; 方式2:&#xff08;快捷键&#xff1a;Alt9&#xff09;

java Servlet 汽车保养服务平台系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Servlet 汽车保养服务平台系统是一套完善的java web信息管理系统&#xff0c;采用serlvetdaobean mvc模式开发&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数 据库&#xff0c;系统主要采用B/S模式开发。开发环境为…