首页
社区
课程
招聘
[原创] 看雪 2022 KCTF 秋季赛 第六题 病疫先兆
2022-11-28 12:44 5646

[原创] 看雪 2022 KCTF 秋季赛 第六题 病疫先兆

2022-11-28 12:44
5646

IDA 看一眼 main
图片描述
输入长 14,把前 5 和后 5 都 atoi,然后分别作为随机种子,生成 20 个随机数和定值比较。然后中间的剩下 4 字节是 KCTF

 

于是写一个 python 脚本爆破,本来想写多进程的,仔细想想种子空间不是 2^32,只有五位数,直接循环

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from ctypes import CDLL
rands = [
    [15356, 8563, 9659, 14347, 11283, 30142, 29542, 18083, 5057, 5531, 23391, 21327, 20023, 14852, 4865, 23820, 16725, 18665, 25042, 24920],
    [11190, 27482, 980, 5419, 28164, 9548, 16558, 22218, 6113, 21959, 13889, 11580, 2625, 19397, 25139, 8167, 28165, 3950, 25496, 27351],
]
def check(seed):
    lib = CDLL('msvcrt.dll')
    lib.srand(seed)
    r0 = lib.rand()
    for rand in rands:
        if r0 == rand[0]:
            if all(lib.rand() == r for r in rand[1:]):
                print(seed)
                print(rand)
                break
 
if __name__ == '__main__':
    for i in range(100000):
        check(i)

答案 14725KCTF83690


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

收藏
点赞0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回