go语言写的大杂汇
ida的f5似乎有些问题,main_check反编译少一半
先是主函数检查了一下外壳 GKCTF{ ... } 总长度43就到main_check了
if ( v1[1] == 43 && *(_DWORD *)v0 == 0x54434B47 && *(_WORD *)(v0 + 4) == 0x7B46 && *(_BYTE *)(v0 + 42) == 0x7D )
{
if ( main_check(*v1, 0x2BuLL) )
{
v4[0] = (__int64)&RTYPE_string;
v4[1] = (__int64)&off_5724B0;
fmt_Fprintln((__int64)&go_itab__ptr_os_File_comma__ptr_io_Writer, qword_625B28, (__int64)v4, 1LL, 1LL);
}
else
{
v3[0] = (__int64)&RTYPE_string;
v3[1] = (__int64)&off_5724C0;
fmt_Fprintln((__int64)&go_itab__ptr_os_File_comma__ptr_io_Writer, qword_625B28, (__int64)v3, 1LL, 1LL);
}
}
第1块是将6-24加密后比较
v2 = main_encrypto(a1 + 6, 24LL);
if ( v4 != 44 || !runtime_memequal(v2, (__int64)"o/aWPjNNxMPZDnJlNp0zK5+NLPC4Tv6kqdJqjkL0XkA=", 44LL) )
return 0;
main_encrypto里可以找到以下语句,显然是3DES加密,CBC,pkcs5padding
v14 = crypto_des_NewTripleDESCipher(a4, 24LL, a6); //3DES
Encrypt_PKCS5Padding(a1, a2, a3, v12); //pkcs5padding
*a7 = 0x7967736E616D7577LL; //以为这就是key但不是
v15 = crypto_cipher_NewCBCEncrypter(v16, v14, (__int64)a7, 8LL, a9); //CBC
*(_QWORD *)&result = encoding_base64__ptr_Encoding_EncodeToString(qword_625AD0, v17, v6, v7); //最后用base64编码
发现a7并不是密钥,于是向回找main_crypto
v4 = encoding_json_Unmarshal(
off_61E540,
qword_61E548,
qword_61E550,
(__int64)&RTYPE__ptr_main_secretdata,
(__int64)v18);
61E540指向一个wellcome的串
.noptrdata:0000000000608840 7B 0D 0A 20 20 20 20 22 6B 65+aKeyWelcometoth db '{',0Dh,0Ah ; DATA XREF: .data:off_61E540↓o
.noptrdata:0000000000608840 79 22 3A 20 22 57 65 6C 63 6F+db ' "key": "WelcomeToTheGKCTF2021XXX",',0Dh,0Ah
.noptrdata:0000000000608840 6D 65 54 6F 54 68 65 47 4B 43+db ' "iv": "1Ssecret"',0Dh,0Ah
.noptrdata:0000000000608840 54 46 32 30 32 31 58 58 58 22+db '}',0
利用这个key和iv在线网站 http://tool.chacuo.net/crypt3des 上解出第1段flag
87f645e9-b628-412f-9d7a-
第2段是 用HashHex2加密再与6e2b55c78937d63490b4b26ab3ac3cb54df4c5ca7d60012c13d2d1234a732b74比较,根据函数名字第2段4个字符是先sha256加密再hex编码,在线 MD5免费在线解密破解_MD5在线加密-SOMD5得到 e402
v6 = Encrypt_Sha256(a1, a2, a3);
encoding_hex_Encode(v7, v5, v5, v6, v4);
第3段密文是"6500fe72abcab63d87f213d2218b0ee086a1828188439ca485a1a40968fd272865d5ca4d5ef5a651270a52ff952d955" 加密方式是sha512得到f20a
第4段密文是"ff6e2fd78aca4736037258f0ede4ecf0"加密方式是hash,在同一个网站得到 f940
最后组装成,不过一般buu都要把壳改成flag{}再提交,但是这个没改,就是原样
GKCTF{87f645e9-b628-412f-9d7a-e402f20af940}