ctf show web入门104

这是一道非常经典的 PHP 弱类型比较中的 sha1() 碰撞题目。

核心的代码逻辑在这两行:

php 复制代码
if(sha1($v1) == sha1($v2)) {
    echo $flag;
}

这里有个致命的漏洞点:

sha1() 函数无法处理数组:如果给 sha1() 传入一个数组,它不会报错,而是会返回 NULL。

利用数组绕过(最简单、最常用)

在 PHP 中,如果你向 sha1() 函数传入一个数组(例如 ?v2\[\] = 1),sha1() 无法对数组进行哈希计算,会直接返回 NULL 并触发一个警告(Warning)。

当 v1是一个数组时,sha1(v1 是一个数组时,sha1(v1是一个数组时,sha1(v1) 返回 NULL。

当 v2是一个数组时,sha1(v2 是一个数组时,sha1(v2是一个数组时,sha1(v2) 返回 NULL。

最终比较变为:NULL == NULL,结果为 true。

构造 Payload

GET 请求参数(加在 URL 后面):?v2\[\]=2

POST 请求体(放在 Body 中):v1\[\]=1

相关推荐
江屿风1 小时前
【Plain Language Large Model】【从麦当劳点餐到Redis接入:MCP如何让AI工具集成变简单】流食般投喂
人工智能·redis·笔记·语言模型·llm·mcp
海绵宝宝转agent1 小时前
Leetcode二叉树算法个人理解
笔记·学习·算法·leetcode·深度优先
小oo呆1 小时前
【学习心得】MCP工具开发学习笔记
笔记·学习
2601_961146202 小时前
实验室用等离子表面处理设备处理汽车PP内饰件和PBT骨架的一点记录
笔记·汽车·设备
二十七日秋2 小时前
算法刷题笔记「Day 1|四道 OJ 入门题里的深坑」
c语言·汇编·数据结构·c++·笔记·python·算法
星恒随风2 小时前
Linux Socket TCP编程(二):逐文件重构多进程、多线程与线程池服务器,深入fork、pthread_create、popen和std::bind
linux·服务器·笔记·学习·tcp/ip
hkNaruto3 小时前
【AI】深度学习、强化学习、深度强化学习基础概念笔记
人工智能·笔记·深度学习
无心水4 小时前
15、云原生架构设计理论与实践 核心考点与学习笔记
笔记·学习·云原生·架构师·软考·系统架构设计师·软考系统架构设计师
动词ing4 小时前
【学习笔记】51单片机 独立按键控制LED显示二进制
笔记·学习·51单片机
叼烟扛炮5 小时前
Linux 学习笔记(三十九):网络基石——TCP/IP 模型与 UDP 实战
linux·运维·网络·笔记·学习·tcp/ip