ctf漏洞总结

漏洞

Posted by mr_king on July 20, 2020

base64和base32

Base32和Base64的一点区分注意

看到编码内容,只有大写和数字,根据Base64和Base32 区别: base64中包含大写字母(A-Z)、小写字母(a-z)、数字0——9以及+/; base32中只有大写字母(A-Z)和数字234567 使用base32编码解码: GUYDIMZVGQ2DMN3CGRQTONJXGM3TINLGG42DGMZXGM3TINLGGY4DGNBXGYZTGNLGGY3DGNBWMU3WI=== 得:504354467b4a7573745f743373745f683476335f66346e7d 然后16进制编码得到flag

sha1和MD5

MD5 compare漏洞

PHP在处理哈希字符串时,如果利用”!=”或”==”来对哈希值进行比较,它把每一个以”0x”开头的哈希值都解释为科学计数法0的多少次方(为0),所以如果两个不同的密码经过哈希以后,其哈希值都是以”0e”开头的,那么php将会认为他们相同。

常见的payload有

0x01 md5(str)

QNKCDZO

240610708

s878926199a

s155964671a

s214587387a

s214587387a

0x02 sha1(str)

sha1('aaroZmOk')  

sha1('aaK1STfY')

sha1('aaO8zKZF')

sha1('aa3OFF9m')

同时MD5不能处理数组,若有以下判断则可用数组绕过

if(@md5($_GET['a']) == @md5($_GET['b']))

{

    echo "yes";

}

//http://127.0.0.1/1.php?a[]=1&b[]=2