bugku前女友(SKCTF)
2018-10-13 本文已影响0人
牛一喵
emmmm,打开题目是这样子的,天啦,连做题目都要提到分手这个伤感的主题,好了认真做题。
打开源码发现链接是转到另一个页面的链接,点击
strcmp() 函数比较两个字符串。
从上述代码我们知道需要v1与v2不相等,但是md5加密后相等,v3需要和flag相等。
试下 字符串 240610708跟QNKCDZO,所有类似的字符串得到的md5如果是0e打头的,一些语言(PHP)会做隐式转换,当做int类型计算,得到的结果是 0,最后导致0==0,判定为true
v1=240610708&v2=QNKCDZO&v3
那么我蒙住了,我就是要得到flag,我怎么设定v3呢,通过百度发现strcmp有一个漏洞,这一个漏洞适用与5.3之前版本的php,传入的期望类型是字符串类型的数据,当这个函数接受到了不符合的类型,这个函数将发生错误,但是在5.3之前的php中,显示了报错的警告信息后,将return 0 !!!! 只要v3是一个数组就可以,php为了可以上传一个数组,会把结尾带一对中括号的变量,因此
我们设定v1=240610708&v2=QNKCDZO&v3[]=1
get ~~~