前女友(SKCTF)
题目链接:
http://123.206.31.85:49162/
访问链接后发现页面并无有用信息,右键查看源代码,发现code.txt
访问,发现是一道代码分析题,源码如下:
源码分析:
使用get方法传入v1,v2,v3
V1与v2不能相等,但v1与v2的md5值要相等
V3需要和flag相等
综上分析,我们有两个方案
1.满足v1与v2不能相等,v1与v2的md5相等,可以利用md5函数漏洞即md5不能计算数组的md5因此传入v1[]=1,v2[]=2
V3要与flag 进行比较,我们利用strcmp函数漏洞,strcmp函数不能处理数组,因此构造的payload为:
http://123.206.31.85:49162/?v1[]=1&v2[]=3&v3[]=4
成功获取flag:SKCTF{Php_1s_tH3_B3St_L4NgUag3}
2.满足v1与v2不能相等,v1与v2的md5相等,可以利用md5函数的漏洞,PHP在处理哈希字符串时,它把每一个以“0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以“0E”开头的,那么PHP将会认为他们相同,都是0。
常用的有:
QNKCDZO
240610708
s878926199a
s155964671a
s214587387a
s214587387a
构造payload:
http://123.206.31.85:49162/?v1=QNKCDZO&v2=s878926199a&v3[]=4
获得flag:SKCTF{Php_1s_tH3_B3St_L4NgUag3}
提交SKCTF{Php_1s_tH3_B3St_L4NgUag3}