-
-
[原创] 看雪CTF Q3题目 第八题:人妒英才 设计思路提交
-
发表于:
2019-8-9 11:25
3578
-
[原创] 看雪CTF Q3题目 第八题:人妒英才 设计思路提交
参赛题目:CrackMe
题目答案:Kanxue_2019_Q3
详细的题目设计说明和破解思路以及其他需要说明的各个问题:
该题目假装是一个基于ECC椭圆加密求解的题目。之前发了一篇ECC椭圆加密的原理分析:https://bbs.pediy.com/thread-253672.htm,相信误导了不少解题朋友,在此给大家道歉,如果按照ECC解法做反而是做不出来的,具体解法在源码中。
题目说明:
如果按照ECC解法:
根据椭圆曲线的基本概念,首先给出了椭圆曲线Ep:Ep = y^2 = x^3 + 125*x 以及关键的参数:素域p=127,基点G=(11,4) 公钥K=(120,41)
私钥在代码和新增的区段中都有说明,没有给出直接提示:
私钥在源代码中的体现:
一个简单的异或可以得到x=9
而根据椭圆曲线定义
所以私钥=x=9
但实际上的变换操作为:
加密函数的源代码:
未做混淆,攻击方可以直接通过阅读IDA获取。
代码手动写了一个超级简单的反调试壳:
首先通过010Editor给程序新增加了一个区段,区段名顺便提示了私钥
然后把程序原OEP更改到了新增的区段Offset处:
使用x32dbg后,使用了:
几行简单的代码判断是否处于调试状态
如果处于调试状态,则设置两个循环跳转使得程序sleep。
如果未处于调试状态,则jmp到程序真实的OEP。
这里手动将一部分实际应用到的汇编代码拷贝了过来,起到一点干扰作用。
输入判断:
最开始将用户输入的字符串传入的加密函数ECode得到了一个加密的字符串,将加密字符串的ASCII打印出来如下:
保存该字符串的ASCII:
然后将用户输入后的字符串加密后与该字符串进行比较:
最后删除解密函数以及多余的打印信息build成exe进行手动加壳。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2019-9-25 10:35
被jux1a编辑
,原因: