[SWPUCTF 2021 新生赛]easy_md5

题目:

从题目可看出:

该题判断用户是否通过get方法传递了name参数和使用post方法传递了password参数

如果没有,直接输出wrong

  • 如果有,它就将这两个参数分别赋值给name和password变量,并进行以下判断:
    • 如果name和password不相等,并且它们的MD5哈希值相等,就输出flag2.php文件中的内容。
      • 这是一个逻辑漏洞,因为MD5哈希函数是不可逆的,但是存在碰撞的可能性,也就是说,不同的输入可能产生相同的输出。所以,如果用户能够找到两个不同的字符串,但是它们的MD5值相同,就可以通过这个判断。
      • 否则,就输出wrong!。

考察知识:

两变量值不相等,MD5计算散列值后相等绕过的方法

1.==的绕过

PHP中==是判断值是否相等,若两个变量的类型不相等,则会转化为相同类型后再进行比较。PHP在处理哈希字符串的时候,它把每一个以0e开头并且后面字符均为纯数字的哈希值都解析为0

python 复制代码
import requests

# 网站的URL
url = "http://node5.anna.nssctf.cn:28993/"

# 用get方法传递的password参数
name = "s878926199a"
# 用post方法传递的password参数
password = "s155964671a"
# 两个参数的md5值均以0e开头且后面的字符均为纯数字
# 发送post和get请求,并获取响应对象
response = requests.post(url, data={"password": password}, params={"name": name})

#response = requests.get(url, params={"name": name})
# 打印响应的文本内容
print(response.text)

2.===的绕过

===会比较类型,这个时候可以用到PHP中md5()函数无法处理数组(会返回NULL)来实现绕过

相关推荐
第九序言T5 小时前
Python 数据处理进阶(十八)批量处理同结构文件:一个文件夹一次跑完
开发语言·python·自动化·pandas·数据处理
Java后端的Ai之路5 小时前
CAS并发控制-从CPU指令到企业级乐观锁
vue.js·人工智能·python·cas·乐观锁
qq_426003965 小时前
UI自动化高频次登录login限流解决方案
python·ui·自动化
Sakura_j_h_6 小时前
EasyEDA PCB 快速设计Skills
c++·python·github
quantdash_cc7 小时前
如何验证历史行情的交易日期是否完整覆盖研究区间?
python·数据分析·pandas·量化交易·股票数据·quantdash
I Am a robert girl7 小时前
当智能体学会“串通”:从长程交互中读懂涌现式合谋
python·多智能体系统·多智能体协作·llm agent·涌现式合谋·对齐问题·激励机制设计
云和数据.ChenGuang8 小时前
光哥说Python RAG 系统需要哪些评估指标:从检索到生成的全链路评测指南
网络·人工智能·python·算法·langchain
专注仿真8 小时前
线性回归和逻辑回归算法详解
开发语言·人工智能·python·大模型训练·控制算法
wflynn9 小时前
GitHub 今日推荐|Edge0:让大号 MoE 模型在一台 Mac 上流式跑起来
python·开源·github
2601_967980119 小时前
python之用scapy分层解析pcap报文(Ethernet帧、IP数据包、TCP数据包、UDP数据包、Raw数据包)
python·scapy·pcap·协议分析·网络数据包