[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)来实现绕过

相关推荐
全栈练习生9 小时前
AI Agent 沙箱
python·ai
SEO_juper10 小时前
用 Python 写一个 GEO 可见性检查脚本:你的网站现在能被 AI 引用吗
开发语言·人工智能·爬虫·python·seo·外贸独立站
用户83562907805111 小时前
使用 Python 对 Excel 工作表进行排序
后端·python
for_ever_love__12 小时前
MySQL 全文索引实战:FULLTEXT、ngram 中文分词与 MATCH AGAINST 到底该怎么用
java·python·mysql·全文检索·分词·索引·ngram
用户83562907805112 小时前
使用 Python 合并 PowerPoint 演示文稿
后端·python
weixin_4617694012 小时前
VS Code 中创建 Jupyter 文件(.ipynb)
ide·python·jupyter
2601_9669496512 小时前
多市场量化策略的数据接口应该如何设计:从数据层架构到策略接入
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
全栈弄潮儿13 小时前
Python实战第1期:Python环境搭建与第一个程序
python
心易行者13 小时前
Agent应用+API端点商业化进阶实战:从单体智能体到可付费调用的API全流程
运维·服务器·人工智能·python·apache
weixin1997010801613 小时前
《1688图片空间API踩坑:img.upload 与 album.* 的防盗链与CDN缓存问题》(附Python源码)
开发语言·python·缓存