打开界面只有一串字符
尝试各种揭秘解码格式都没用,可以观察到**这是两个重复的字符串**,其实是个MD5加密。
那现在怎么办嘛,按照题目:**备份是个好习惯**,是为了让我寻找.bak文件,也就是说存在某个文件.bak可以访问。
这个时候用**御剑后台扫描**,发现有个.bak后缀的后台。之后拿到了提示的文件。打开文件后,是一串PHP代码
解释:
代码大意:**整段代码的意思是将get的两个参数中的key替换为空(这里可以用kekeyy绕过),然后对key1,key2的值进行md5加密进行比较,**如果md5加密的值一样而未加密的值不同,就输出flag.
绕过办法:
1.**md5()函数无法处理数组**,如果传入的数组,就会返回NULL,所有两个数组经过加密后得到的都是NULL,也就是相等的。
2.**利用==比较漏洞:如果两个字符串经MD5加密后的值为0eXXXXX形式,就会被认为是科学计数法,且表示的是010的XXXX次方,还是0,都是相等的。*
在这里稍微提下PHP弱类:
1.标准类型:布尔boolean,整形integer,浮点float,字符string 2.复杂类型:数组array,对象object 3.特殊类型:资源resource,空null 与别的语言不同,php是一个弱类型的语言,“==”的表示是等于,只要数值相等就可以了,类型无所谓。php**弱类型语言总的类型判断:**
php一个数字和一个字符串进行**对比或者进行运算**时,php会把字符串转换成数字再进行比较。
php的转换规则是:若字符串以数字开头,则取开头数字作为转换结果,若无则输出0
(kkeyey的意思是因为代码把key转为了空,所以只有这样才能有key)