[BJDCTF2020]Easy MD5-学习笔记

发布时间:2026/9/23 1:13:50

[BJDCTF2020]Easy MD5-学习笔记 前置知识1、PHP 松散比较 vs 2、 0e 绕过正文一、代码审计md5函数知识点讲解二、构造请求参数三、PHP 松散比较四、构造数组实现MD5 绕过五、PHP 严格比较1、为什么 0e 绕过在这里失效2、为什么数组绕过仍然有效六、构造数组实现MD5 绕过前置知识1、PHP 松散比较vsPHP 有两种比较运算符松散比较只比较值会进行类型转换严格比较同时比较值和类型不会进行类型转换2、0e绕过当一个字符串的 MD5 哈希值形如0eXXXXXXXXX即0e开头后面全是数字PHP 的会把它当作科学计数法处理0e123在科学计数法中等于0 × 10¹²³0因此两个不同的0e开头的 MD5 值用比较结果都为true因为0 0经典0e碰撞对字符串MD5 值QNKCDZO0e830400451993494058024219903391s878926199a0e545993274517709034328855841020s155964671a0e342768416822451524974117254469s214587387a0e848240448830537924465865611904更简单的解法数组绕过:除了0e绕过还有更通用的数组绕过方法在 PHP 中md5(数组)→ 返回NULL因为md5()期望字符串参数传入数组会报错但返回NULLNULL NULL→true松散比较不同数组$a ! $b→true所以只需要传a[]1b[]2即可绕过。正文一、代码审计访问目标首页http://ceb7428be7b64f06d52ca0af.http-ctf2.dasctf.com:80/页面自动跳转到./leveldo4.php。访问./leveldo4.php响应头中包含一个提示Hint: select * from admin where passwordmd5($pass,true)页面是一个密码输入框提交的密码会经过md5($pass, true)处理后拼接到 SQL 查询中。md5函数知识点讲解md5($string, $raw_output)函数的第二个参数$raw_output默认false返回32 字符的十六进制字符串如d41d8cd98f00b204e9800998ecf8427e设为true返回16 字节的原始二进制数据可能包含不可见字符当md5($pass, true)的输出直接拼接到 SQL 查询时如果原始二进制数据中包含单引号等 SQL 特殊字符就可能造成 SQL 注入。因此我们需要找一个字符串它的 MD5 原始二进制值恰好构成 SQL 注入语句。经过前人验证字符串ffifdyop的 MD5 原始二进制值为 or 6É]é®ãR^ìÿ在 SQL 中解析后等效于select*fromadminwherepasswordor6É...由于6É...不为假 or 6É...结果为真从而绕过密码验证。其他可用字符串129581926211651571912466741651878684928→ MD5 raw:06da5430449f8f6f23dfc1276f722738但ffifdyop是最经典、最简洁的 payload。二、构造请求参数向./leveldo4.php发送 GET 请求参数为passwordffifdyopGET /leveldo4.php?passwordffifdyop HTTP/1.1 Host: ceb7428be7b64f06d52ca0af.http-ctf2.dasctf.com响应成功页面底部出现 JavaScript 重定向scriptwindow.location.replace(./levels91.php)/script三、PHP 松散比较访问./levels91.php页面 HTML 注释中泄露了 PHP 源码$a$_GET[a];$b$_GET[b];if($a!$bmd5($a)md5($b)){// wow, glzjin wants a girl friend.条件要求$a ! $b两个值不相等松散比较md5($a) md5($b)两个值的 MD5 哈希松散相等四、构造数组实现MD5 绕过向./levels91.php发送 GET 请求使用数组绕过GET /levels91.php?a[]1b[]2 HTTP/1.1 Host: ceb7428be7b64f06d52ca0af.http-ctf2.dasctf.com响应中出现 JavaScript 重定向scriptwindow.location.replace(./levell14.php)/script五、PHP 严格比较访问./levell14.php页面直接显示了 PHP 源码?phperror_reporting(0);includeflag.php;highlight_file(__FILE__);if($_POST[param1]!$_POST[param2]md5($_POST[param1])md5($_POST[param2])){echo$flag;}条件要求$_POST[param1] ! $_POST[param2]严格不相等类型和值都不同md5($_POST[param1]) md5($_POST[param2])MD5 哈希严格相等1、为什么0e绕过在这里失效严格比较要求类型和值都相等0e830400451993494058024219903391 0e545993274517709034328855841020→false即使它们数值上都是 0但字符串内容不同严格比较会直接返回false2、为什么数组绕过仍然有效当 PHP 的md5()函数接收到数组参数时PHP 会抛出警告Warning但仍然返回NULLmd5($_POST[param1])→NULLmd5($_POST[param2])→NULLNULL NULL→true类型相同NULL值相同NULL同时$_POST[param1] ! $_POST[param2]→true两个不同的数组因为$a array(0 1)和$b array(0 2)是两个不同的数组对象因此数组绕过对同样有效六、构造数组实现MD5 绕过向./levell14.php发送 POST 请求使用数组绕过POST /levell14.php HTTP/1.1 Host: ceb7428be7b64f06d52ca0af.http-ctf2.dasctf.com Content-Type: application/x-www-form-urlencoded Content-Length: 21 param1[]1param2[]2响应体中成功输出 Flag。
延伸阅读

更多相关文章

2026/9/20 4:03:27

去AI痕迹怎么操作?2026年论文AI率从70%降到8%的实测记录

「您的论文AIGC疑似度70%」——看到这个结果,很多人的第一反应是逐句手动改。改到凌晨三点,复查还有45%,崩溃。2026年各高校和期刊的AIGC检测越来越严,「去AI痕迹」成了论文收尾的刚需环节。我记录了自己把AI率从70%降到8%的全过程…

2026/9/23 1:12:22

GPT2中文模型深度部署:从源码级定制到生产优化

简介:本资源是一份面向NLP初学者与进阶开发者的Python实践项目,聚焦GPT-2模型在中文文本生成任务中的完整实现路径,涵盖数据预处理、模型微调、对话生成及评估部署等核心环节。压缩包共16个文件(9个Python脚本承担训练、生成、数据…

2026/9/23 1:12:22

Kilo Code:统一CLI抽象层重构AI开发工作流

1. 这不是又一个“AI插件合集”,而是CLI工作流的底层重构你有没有过这种体验:在VS Code里装了七八个AI相关插件——Codex CLI、Claude Code、Trae CLI、Wokwi for VS Code,甚至还有自己编译的Deveco CLI二进制;每次打开编辑器&…

2026/9/23 1:12:22

平板电脑如何强制开机完整示例:3个底层原理坑点与实战排查指南

平板电脑如何强制开机完整示例:3个底层原理坑点与实战排查指南 面试被问“设备无响应时如何强制重启”,90%的开发者只能背出“长按电源键”,却说不清底层电源管理单元(PMU)是如何响应中断的。这不仅仅是运维操作,更是嵌入式系统与硬件交互的核心…

2026/9/23 1:07:22

基于种群进化算法的数字化车间排产调度系统实现解析

简介:面向数字化车间智能排产调度挑战赛的Python源码项目,围绕工业4.0背景下生产过程数字化与智能优化的实际需求,整合了从数据处理、算法设计到结果展示的完整赛题方案,适合智能制造、运筹优化方向的开发者与参赛者学习。压缩包共…

2026/9/22 10:02:42

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/22 9:07:39

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/23 0:01:54

3个实战技巧搞定形式英语:从看教程到跑通性能优化

3个实战技巧搞定形式英语:从看教程到跑通性能优化 看了一堆教程还是不会写项目?别慌,这种“眼高手低”的困境在开发者圈子里太常见了。很多人以为卡点在语法,其实真正拦路虎是缺乏将知识点串联成完整链路的能力。今天咱们不聊虚的,直接拿【形式英语】这…

2026/9/22 16:34:32

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/22 20:01:30

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/22 13:25:41

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码