-
-
[原创] 第二题 WP
-
发表于: 2020-4-17 11:16 2731
-
sn 做 aes_decrypt 之后做 modexp,出来的结果的低 128 bits 与 name(key) 的某种 hash 做比较,高 128 bits(prefix)仅校验了部分。
name 的 hash 可以直接 dump,aes_decrypt 那个函数包含了 encrypt 于是又可以直接拿来用,modexp 丢给了 RsaCtfTool.py。
hash('KCTF') == 0x14AF58AD4D76D59D8D2171FFB4CA2231
prefix + hash('KCTF') == 0x2888888888888888888888888880014AF58AD4D76D59D8D2171FFB4CA2231
python3 RsaCtfTool.py -n 0x69823028577465ab3991df045146f91d556dee8870845d8ee1cd3cf77e4a0c39 -e 0x10001 --uncipher 0x2888888888888888888888888880014AF58AD4D76D59D8D2171FFB4CA2231
==> 0x2d5f4c9d567c43399312b8898d6c7f2ec799c64bde4fe39eb01771be1e7f4795
aes_decrypt('2d5f4c9d567c43399312b8898d6c7f2ec799c64bde4fe39eb01771be1e7f4795') == 0x0c5ce379f2102313d7420ec4883e25d07b935f98e2b0d9819275450cfda7086e(sn)
由于 prefix 没有校验足够多的位:
error: (v5[0] || v5[1] != 2 || v5[15] || v5[10] != 0x88)
因此可以构造多解,例如:
name: KCTF
sn1: 840ec5ec3a969a82058d0ba93dd23889b716aec337c10ef073fb17a4b913d2a2
sn2: c26e02d0b7fa614240db954747e836102bf1854e659cd7d00f19779c461d073f
再由于 sn 没有限制大小写,又有了 N 个多解,例如:
sn3: 840EC5EC3A969A82058D0BA93DD23889B716AEC337C10EF073FB17A4B913D2A2
sn4: C26E02D0B7FA614240DB954747E836102BF1854E659CD7D00F19779C461D073F
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
- [原创] 第三题 寻踪觅源 WP 4059
- [原创] 第二题 WP 2732
- [原创]第四题 club_pwn exp 3654
- [原创]第三题 crackMe 2850
- [原创]第二题 ctf2017_Fpc 3919