
作为一个信息安全的人,打各个学校的CTF比赛是比较重要的!
最近一个朋友发了道题目过来,发现有道题目比较有意思,这里跟大家分享下
这串代码的大致意思是:
这段代码首先引入了一个名为"flag.php"的文件,该文件可能包含一个标志(flag)。然后使用highlight_file(__FILE__)函数来高亮显示当前文件的源代码。
接下来,获取了两个变量:$guet和$sec。其中,$guet是从GET请求中获取的参数,默认值为'123456',而$sec则是从COOKIE中获取的参数,默认值也为'123456'。
代码中有一段正则表达式/^2023(.*?)GUETSEC$/,用于检查$guet是否以"2023"开头,以"GUETSEC"结尾,并且在开头和结尾之间可以包含任意字符。如果满足这个条件,那么会进行以下判断:
- 如果
$guet的MD5哈希值等于'a26f719b36e667992b03a298ad18b1c7',则输出$flag的MD5哈希值。 - 如果
$guet的整数值等于反转后的$guet的整数值,则输出$flag的长度。
接下来,如果$guet不为空,那么会进行以下判断:
如果$sec的MD5哈希值等于$flag与$guet拼接后的MD5哈希值,那么输出$flag的值。
最后,如果$guet为空,则输出"Oh no! You can't do this!"。
这道题目的原理是:hash长度扩展攻击,这里先介绍个脚本方法爆破,这是我最初使用的脚本:
因为要爆破的其实就中间的三个字母(一共十四个,已经知道11个)所以比较简单,

本文分享了解一道CTF比赛中的编程题目,涉及MD5哈希和hash长度扩展攻击。作者通过分析代码逻辑,展示了如何利用已知信息和工具如HashPump进行攻击,揭示了MD5不可逆性的重要性。
最低0.47元/天 解锁文章
2350

被折叠的 条评论
为什么被折叠?



