md5
MD5绕过是web入门掌握的最基本的知识点,绕过的方法有以下几种
常规的0e绕过
在遇到php弱比较两者MD5时,往往使用0e绕过,其原理是利用弱比较(==)不对比数据类型,相当于对比第一个数,例如
1 | if(md5($a)==md5($b)) |
要想满足条件,只需要两位的MD5中16位和32位的第一个满足条件就行,下列是一些达到要求的数值
1 | QNKCDZO |
一般做这种题都是用这些数值的,直接选两个复制上去就可以了ƪ(˘⌣˘)ʃ优雅
数组绕过
在执行md5()函数时,若参数为数组,返回结果是为null,利用这一点,可以使两者都为数组时,结果为null,以达成类型和数据都相等。例如
1 | var_dump(md5($_GET['a']) == md5($_GET['b'])) |
像是这种的,我们就可以利用数组进行绕过(strpos函数也是这样的,我就不单独提出来了,遇到strpos想到数组绕过就行了)
1 | a[]=a&b[]=b |
强类型绕过
当判断条件或者让你所输入的参数转换成立string类型的,那么上面的方法都不能用了,例如
1 | if((string)$_POST['a'] !== (string)$_POST['b'] && md5($_POST['a']) === md5($_POST['b'])) |
那么有没有应对之法,当然是有的,payload直接给你啦٩(๑•̀ω•́๑)۶
1 | $Param1="\x4d\xc9\x68\xff\x0e\xe3\x5c\x20\x95\x72\xd4\x77\x7b\x72\x15\x87\xd3\x6f\xa7\xb2\x1b\xdc\x56\xb7\x4a\x3d\xc0\x78\x3e\x7b\x95\x18\xaf\xbf\xa2\x00\xa8\x28\x4b\xf3\x6e\x8e\x4b\x55\xb3\x5f\x42\x75\x93\xd8\x49\x67\x6d\xa0\xd1\x55\x5d\x83\x60\xfb\x5f\x07\xfe\xa2"; |
1 | $data1="\xd1\x31\xdd\x02\xc5\xe6\xee\xc4\x69\x3d\x9a\x06\x98\xaf\xf9\x5c\x2f\xca\xb5\x07\x12\x46\x7e\xab\x40\x04\x58\x3e\xb8\xfb\x7f\x89\x55\xad\x34\x06\x09\xf4\xb3\x02\x83\xe4\x88\x83\x25\xf1\x41\x5a\x08\x51\x25\xe8\xf7\xcd\xc9\x9f\xd9\x1d\xbd\x72\x80\x37\x3c\x5b\xd8\x82\x3e\x31\x56\x34\x8f\x5b\xae\x6d\xac\xd4\x36\xc9\x19\xc6\xdd\x53\xe2\x34\x87\xda\x03\xfd\x02\x39\x63\x06\xd2\x48\xcd\xa0\xe9\x9f\x33\x42\x0f\x57\x7e\xe8\xce\x54\xb6\x70\x80\x28\x0d\x1e\xc6\x98\x21\xbc\xb6\xa8\x83\x93\x96\xf9\x65\xab\x6f\xf7\x2a\x70"; |
1 | array1=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2& |
喜欢哪个用哪个(我个人常用第三个)
弱比较等于自身
有这么两个字符串,它的弱比较等于自身,我们称它们为奇妙的字符串,当遇到这种情况时,我们通常使用它们
1 | $a==md5($a) |
它们就是
1 | Ffifdyop |
补充
对于需要两个内容不同但是MD5值相同的文件,使用Fastcoll工具就可以了Fastcoll
sha1绕过
和md5()函数是一样的原理,就弱比较的字符串和遇到string的情况不一样罢了,这里一次性放出来
1 | 10932435112: 0e07766915004133176347055865026311692244 |
遇到string的情况
1 | array1=%25PDF-1.3%0A%25%E2%E3%CF%D3%0A%0A%0A1%200%20obj%0A%3C%3C/Width%202%200%20R/Height%203%200%20R/Type%204%200%20R/Subtype%205%200%20R/Filter%206%200%20R/ColorSpace%207%200%20R/Length%208%200%20R/BitsPerComponent%208%3E%3E%0Astream%0A%FF%D8%FF%FE%00%24SHA-1%20is%20dead%21%21%21%21%21%85/%EC%09%239u%9C9%B1%A1%C6%3CL%97%E1%FF%FE%01%7FF%DC%93%A6%B6%7E%01%3B%02%9A%AA%1D%B2V%0BE%CAg%D6%88%C7%F8K%8CLy%1F%E0%2B%3D%F6%14%F8m%B1i%09%01%C5kE%C1S%0A%FE%DF%B7%608%E9rr/%E7%ADr%8F%0EI%04%E0F%C20W%0F%E9%D4%13%98%AB%E1.%F5%BC%94%2B%E35B%A4%80-%98%B5%D7%0F%2A3.%C3%7F%AC5%14%E7M%DC%0F%2C%C1%A8t%CD%0Cx0Z%21Vda0%97%89%60k%D0%BF%3F%98%CD%A8%04F%29%A1 |