前言
对于PHP大家一定不陌生,但你知道PHP在CTF中是如何考察的吗,本文给大家带来的是通过PHP特性来进行CTF比赛中解题出题的知识,会介绍一下CTF中常见的php特性以及围绕该知识点的相关案例,因为内容过多这里分成上中下三篇来讲,下面我们展开来讲。
MD5强弱碰撞
对于MD5加密大家一定很熟悉,在PHP里同样存在函数MD5,该函数可以将指定的字符串通过哈希函数转为复杂的加密字符串。在CTF中有着关于MD5的最基本的知识,即强/弱类型比较。
弱类型比较
观察以下代码:
if(md5($_GET['a'])==md5($_GET['b']))
echo $xino;
可以看到比较时有两个等号,我们要怎样让他们相等呢?根据php弱类型比较特性,当两个等于号时,会将变量转化为同类型,那么我们可以思考,如果把传入的数据改成md5加密后都为开头0e的字符串是不是就可以绕过了,因为这样会被认为是科学计数法,不管加什么都永远是0,我们也就绕过了,这里举几个字符串md5加密后都为0e的:
NWWKITQ:0e763082070976038347657360817689
NOOPCJF:0e818888003657176127862245791911
s878926199a:0e545993274517709034328855841020
s1091221200a:0e940624217856561557816327384675
强类型比较
观察下面代码:
if (md5($_POST['a']) === md5($_POST['b']))
echo xino;

本文介绍了CTF比赛中PHP特性的应用,重点讲解了MD5的弱类型与强类型比较,以及如何利用PHP特性进行绕过。在弱类型比较中,通过构造以0e开头的字符串可以绕过;而在强类型比较中,可以利用数组的MD5值为NULL进行绕过。还探讨了MD5强碰撞的概念,并提到了preg_match()函数的正则匹配和绕过策略。
最低0.47元/天 解锁文章
4071

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



