前言
对于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
s878926199