查看: 11519|回复: 2

由一道CTF题引申的思考

[复制链接]
发表于 2016-2-13 19:31:02 | 显示全部楼层 |阅读模式
很久以前打了场CTF比赛,在论坛里求解,此时90大大丢给了我答案(在这里谢谢90大大),然而我和一些论坛里的朋友并不知道原理。在这里与大家分享一下。
-------------------------------------------------------------------华丽丽的分割线-----------------------------------------------------------------------------------------
题目源代码如下:
[PHP] 纯文本查看 复制代码
<?php
 //just break the md5 algorithm and make a collision ;)
 include('config.php');
 if(empty($_GET['md5'])) die(show_source(__FILE__));
 if($_GET['md5']!='400035577431' && md5($_GET['md5']) == md5('400035577431')) echo $flag;
 ?>

然后比赛就是拿flag。这里是要给出一个md5满足不等于400035577431,但是md5加密后==。
因为php是一种弱类型的语言。双==其实就是弱类型。

这里举出一些例子:
[PHP] 纯文本查看 复制代码
0=='0'//True
123=='123'//True
123=='123abc'//True
'abc'=='0'//True


现在看一下90大大给的md5=0e091414744693913505115617781878,这一串intval()之后就是0,而400035577431加密后为0e091414744693913505115617781878,intval()之后也是0,所以相等。


回复

使用道具 举报

发表于 2016-2-13 19:42:24 | 显示全部楼层
啊想起来了,这题目有段日子了

点评

是有些时候了。。。  详情 回复 发表于 2016-2-13 22:11
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-13 22:11:01 | 显示全部楼层
90_ 发表于 2016-2-13 19:42
啊想起来了,这题目有段日子了

是有些时候了。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

旗下站点

邮箱系统

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2025-5-2 04:49 , Processed in 0.060150 second(s), 19 queries , Gzip On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部