-
-
[原创]KCTF2020 智能设备Crackme 题目提交
-
发表于: 2020-10-29 22:55 2414
-
题目类型:
智能硬件Crackme题目
flag:2296dc2f09144713
设计: 使用64位椭圆曲线,设计为弱私钥,私钥可在3分钟内爆破
曲线参数如下:
p = 0xc021a12750820335
a = 0x2b7874ef148937d1
b = 0x496412a7502c4cd5
G = (0x4d8acf91aac0ba96, 0x79e9ac784679a36d)
n = 0xc021a1277f8b7ee7
flag为一个固定的签名(ECC签名中的s),检查flag过程为ECC验签过程中的检查s过程。
验签过程在duktape虚拟机中运行。
题目需要在arm模拟器下运行.运行命令为:
qemu-system-arm -M versatilepb -dtb ./versatile-pb.dtb -kernel zImage -append "console=ttyAMA0" -nographic
命令在ubuntu18.04环境下测试通过.qemu版本4.2.1.
当输入错误时无显示,当输入正确时显示"you got it"
正确flag 的计算时间约为50秒左右.
- 破解
从zImage中提取出k2020程序,直接运行strings,可以得到部分曲线参数。
跟踪验签过程得到公钥:(0xb520ee455c4e5c68, 0x8d2984eb2d7fd1ce)
根据曲线参数和公钥爆破得到私钥: 125591, 使用sage运行爆破时间在2分钟左右.
跟踪验签过程得到k值130516937431,和待验签数据 0x4b43544632303230
就能根据签名过程计算出flag
参考:
210K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6U0M7%4u0U0i4K6u0W2L8X3W2K6N6q4)9J5k6h3N6G2N6W2)9J5c8X3y4K6M7X3y4Q4x3V1k6E0k6h3c8A6j5g2)9J5c8X3g2$3k6h3&6@1M7#2)9J5c8Y4N6G2M7X3E0K6K9r3!0H3i4K6u0V1L8$3&6Q4x3X3c8W2L8r3I4A6M7s2c8A6j5#2)9J5k6r3y4#2M7Y4k6W2i4K6u0V1j5%4u0&6M7s2c8G2k6%4u0S2M7r3S2&6i4K6u0V1M7%4c8S2L8X3c8S2M7X3c8K6i4K6u0r3k6r3!0U0N6h3#2W2L8Y4c8K6i4K6u0r3M7r3q4H3k6i4u0K6i4K6u0r3M7$3g2K6M7$3W2G2L8U0k6Q4x3X3c8S2k6r3q4D9K9h3g2J5i4K6u0V1L8h3g2Z5L8h3g2@1i4K6u0W2M7r3c8X3