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
完成!
参考资料:
--------------------- ┑( ̄Д  ̄)┍ --------------------------
作者:0yst3r[一只在安全领域努力奋斗的小菜鸡]
来源:博客园[ https://www.cnblogs.com/0yst3r-2046/ ] 引用时请注明来源哦~
(๑•̀ㅂ•́)و✧ヽ(✿゚▽゚)ノ(*^▽^*) φ(≧ω≦*)♪
如果本文对你有用,本人不胜欢喜。
The world is your oyster.