[BJDCTF2020]Easy MD51
1.进去以后看到一个熟悉的表单页面。2.那我们先三板斧试试。试了以后发现没有什么用。3.那我们转战f12源码没发现什么东西。那我看看网络里面有没有什么东西。4.发现一个Hint。这里要说一下Hint这个东西在CTF里面。Hint一般都是提示什么的。我们在找线索的时候看到了一定要着重关注一下。select * from ‘admin’ where passwordmd5$pass,true)这段代码就是我们的线索了前面的一段是查询数据库中的password。重点在于后面的md5($pass, true)返回16 字节原始二进制数据可能包含可打印和非打印字符。也就是说我们输入的东西要转成16字节的原始二进制数据然后才能被password读取。这里写脚本来得到答案很麻烦我们也和其他解题方式一样采用万能的ffifdyop。这里说一下ffifdyop哈希了以后是276f722736c95d99e921722cf9ed621c这个字符串前几位刚好是 or 6所以是永真的。5.然后进入到这么一个页面。那显而易见东西肯定藏在源代码里面。6.果然有东西7.我们一行行审计下去$a $GET[a];和$b $_GET[b];这两行的意思是在URL中取a的值赋值给$a取b的值赋值给$b重点在于下面这两行if($a ! $b md5($a) md5($b))是同时满足两个条件那可以看到a的值不能等于b。但是a和b的md5值要相等。这里还是弱比较。弱比较是个什么东西这里说一下。摘自AI弱比较 ()只比较值不比较类型。在比较前PHP 会自动将不同类型的变量转换成同一类型再进行比较。弱比较的东西比较多这里的答案也很多。我们这里选一种最容易理解的。?a[]1b[]2这段代码的意思是a是个数组值等于1b也是个数组值等于2那MD5弱比较里面不管你值是多少都是NULL那不就是相等了吗8.进入下一关9.道理是一样的传参的方式变成了POST建议使用hackbar。弱等于变成了强等于这里提一下强等于和弱等于的区别比较方式运算符比较内容是否进行类型转换弱比较只比较值是强比较比较值和类型否10.那我们还是根据md5()函数不能处理数组的原理来构造payloadparam1[]1param2[]211.得到flag