Bugku-备份是个好东西
1.这里一开始给了一串代码。这里可以尝试解码,也可以先放一放。
2.这里我使用的是御剑扫描,但是这里提示是备份文件,这里可以直接用访问index.php.bak文件。
3.这里访问index.php.bak文件后可以下载。
4.这里打开进行代码审计
整段代码的意思是将get的两个参数中的key替换为空(这里可以用kekeyy绕过),然后对key1,key2的值进行md5加密,并进行比较,
如果md5加密的值一样而未加密的值不同,就输出flag.
5.这里有两种绕过方法。
<1> md5()函数无法处理数组,如果传入的为数组,会返回NULL,所以两个数组经过加密后得到的都是NULL,也就是相等的。
这里kekeyy绕过是为了防止将key替换成空。
构造url:/?kekeyy[]=something&kekeyy[]=anything
<2> 第二种办法就是利用MD5的==比较漏洞
如果两个字符经MD5加密后的值为 0exxxxx形式,就会被认为是科学计数法,且表示的是0*10的xxxx次方,还是零,都是相等的。
下列的字符串的MD5值都是0e开头的:
QNKCDZO
240610708
s878926199a
s155964671a
s214587387a
s214587387a
构造url:/?kekeyy1=240610708&kekeyy2=QNKCDZO
6.在这个题的那串代码MD5解密一下发现为null