首页
社区
课程
招聘
[原创] 2024KCTF 第九题 第一次接触
发表于: 2024-9-4 01:21 2535

[原创] 2024KCTF 第九题 第一次接触

2024-9-4 01:21
2535

程序第一步检测输入应为0-9a-z

随后将输入三等分,进行3次check

比较第一组输入8长度的字符串为 hellocat

输入的字符 - 0x30 后相加,其值为 DAT_00531004 内存值 (0xD) ,判断 iVar2 * DAT_00531008 == 0x8fa7c86 ,其中DAT_00531008 值为 3 ,iVar2 为字符串转数字得到

计算出iVar2 应为 50211202,其中 thunk_FUN_0045cbc0 将输入字符串倒转 ,传入的字符串应为 20211205

传入参数的字符串长度 >= 8,最后的判断条件为 DAT_00531e9c == 0x10000039 ,注意到 DAT_00531e9c | 0x10000000 之后,DAT_00531e9c = 1 会将结果覆盖,没有了0x10000000后,最后的判断不会相等

FUN_0045c710 中检测输入,每2个字符,第一个为a-d,第2个为1-4,进行一些计算

注意到 strcpy 会将超长度的字符串覆盖,需要输入9个字符,覆盖内存531e9c 低位为 0x39

在第2步check需要补充 0 ,应为 202112050

在第1步check需要添加1个字符

最后需要比较字符串为 40d511825ecbc207eb6ef9a7b1c6e34b ,根据hash特征数字和调试结果,确定为MD5

爆破输入

最后输入为 hellocatx202112050a3b1c4d29

import hashlib
 
ch = '0123456789abcdefghijklmnopqrstuvwxyz'
ch1 = 'abcd'
ch2 = '1234'
 
for a in ch1:
    for b in ch2:
        for c in ch1:
            for d in ch2:
                for e in ch1:
                    for f in ch2:
                        for g in ch1:
                            for h in ch2:
                                for X in ch:
                                    ans = 'hellocat' + X + '202112050' + a+b+c+d+e+f+g+h +'9'
                                    hash = hashlib.md5(ans.encode()).hexdigest()
                                    if(hash == '40d511825ecbc207eb6ef9a7b1c6e34b'):
                                        print(ans)

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//