Fork me on GitHub

Bugku-CTF之前女友(SKCTF)

Day35 

 

 

前女友(SKCTF)

 

flag格式:SKCTF{xxxxxxxxxxxxxxxxxx}
 
 
本题要点:strcmp()、md5 collision
 
 
 
 
满满的套路啊~
 
链接打开后,发现一段代码
 
 
 
读一下代码,我们看到strcmp()这个函数
这个函数是用于比较字符串的函数
 
int strcmp ( string $str1 , string $str2 )
参数 str1第一个字符串。str2第二个字符串。
如果 str1 小于 str2 返回 < 0;
如果 str1 大于 str2 返回 > 0;
如果两者相等,返回 0。
 
 
 
回看这段代码
我们可以看到 是以GET形式传递3个值,其中v1变量值 != v2变量值,if中的第二个判断条件用的是 ==,我们可以利用 “0x” == "0a"的判断结果为1,找出经过加密后的两个md5值以0开头,接下去以都相同的值,直到遇到的字母的两个字符串相等 v3 == flag
 
那么
 
方法一:
 
我们可以通过
PHP处理0e开头md5时hash字符串漏洞   详细请看
 
https://www.cnblogs.com/0yst3r-2046/p/10748412.html    (md5 collision之记录一些MD5值)
 
构造 index.php?v1[]=QLTHNDT&v2[]=UTIPEZQ&v3[]=EEIZDOI
 
得到答案:
SKCTF{Php_1s_tH3_B3St_L4NgUag3}
 
 
方法二:
 
在PHP中
MD5是不能处理数组的,md5(数组)会返回null
所以即
md5(a[])==null,md5(b[])==null,md5(a[])=md5(b[])=null也可以满足代码中的条件
 
构造: index.php?v1[]=1&v2[]=2&v3[]=3
 
 
 
 
 
 
完成!
 
 
 
 
 
 
 
 
 
 
参考资料:
 
 
 
 
 
 
 
posted @ 2019-06-18 17:18  0yst3r  阅读(1309)  评论(0编辑  收藏  举报
返回顶部