ctf show web入门106

这是一道非常经典的 PHP 代码审计/CTF 题目。核心考点在于 PHP 弱类型下的 sha1() 绕过。

关键的判断逻辑在这里:

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

想要拿到 $flag,你需要满足两个条件:

v1 != v2:传入的两个变量值绝对不能相等。

sha1(v1)==sha1(v1) == sha1(v1)==sha1(v2):它们经过 sha1() 哈希运算后的结果,在 PHP 的弱类型比较(==)下必须相等。

数组绕过法:

原理:PHP 中的 sha1() 函数无法处理数组。如果你往 sha1() 里传入一个数组(例如 \[\]),该函数无法计算哈希,会直接返回 NULL 并触发一个警告(Warning)。逻辑演变:sha1(数组1) -> 返回 NULL

sha1(数组2) ->返回 NULL比较时:NULL == NULL 成立(结果为 true)。同时,两个不同的数组满足 v1 != v2。

通过POST传参输入 v1\[\]=1

通过GET传参输入?v2\[\]=2使这个式子满足if判断语句从而输出flag

flag为:ctfshow{70b1a16b-ce32-4d60-8f22-a116173428a7}

相关推荐
依然范特东4 分钟前
强化学习笔记2--bellman equation
人工智能·笔记
乐观勇敢坚强的老彭29 分钟前
信奥C++一维数组笔记
开发语言·c++·笔记
昕光xg1 小时前
Istio笔记04-基于Jaeger的分布式链路追踪
笔记·分布式·istio
学计算机的计算基1 小时前
操作系统内存管理全解:虚拟内存、页表、COW、malloc、OOM一篇搞定
java·笔记·算法
AOwhisky1 小时前
Python 学习笔记(第五期)——组合数据类型:列表、元组、集合与字典精讲——核心知识点自测与详解
开发语言·笔记·python·学习·云计算
砚凝霜1 小时前
软考网络工程师|第 2 章 信道延迟、传输介质、数据编码、数字调制、PCM 完整备考笔记
网络·笔记·pcm
遇乐的果园14 小时前
前端学习笔记-vue加载渲染优化
前端·笔记·学习
遇乐的果园16 小时前
前端学习笔记-vue状态管理优化
前端·笔记·学习
摇滚侠17 小时前
Java 全栈开发实战教程 课程笔记 29-33
笔记
茯苓gao17 小时前
嵌入式开发笔记:EtherCAT协议从硬件到软件完整配置指南——从零搭建一套EtherCAT通信系统
笔记·嵌入式硬件·学习