首页
社区
课程
招聘
[原创] 看雪CTF Q3题目 第八题:人妒英才 设计思路提交
发表于: 2019-8-9 11:25 3579

[原创] 看雪CTF Q3题目 第八题:人妒英才 设计思路提交

2019-8-9 11:25
3579

参赛题目: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进行手动加壳。


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

最后于 2019-9-25 10:35 被jux1a编辑 ,原因:
上传的附件:
收藏
免费 1
支持
分享
最新回复 (4)
雪    币: 47147
活跃值: (20445)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
https://bbs.pediy.com/thread-253532.htm

方案1:      vii. 所提交的参与CrackMe运行的文件包括.exe.dll.sys等一起在不打包压缩的时总大小不超过1M。

文件体积大小超标了。方案2,可以不超过10M。
2019-8-9 14:24
0
雪    币: 968
活跃值: (6818)
能力值: (RANK:462 )
在线值:
发帖
回帖
粉丝
3
kanxue https://bbs.pediy.com/thread-253532.htm 方案1: vii. 所提交的参与CrackMe运行的文件包括.exe.dll.sys等一起在不打包压缩的 ...
好的,我再修改一下。
2019-8-9 14:53
0
雪    币: 968
活跃值: (6818)
能力值: (RANK:462 )
在线值:
发帖
回帖
粉丝
4
kanxue https://bbs.pediy.com/thread-253532.htm 方案1: vii. 所提交的参与CrackMe运行的文件包括.exe.dll.sys等一起在不打包压缩的 ...
您好,我重新上传了文件附件,修改了图文内容,辛苦再次审核。
2019-8-10 13:31
0
雪    币: 968
活跃值: (6818)
能力值: (RANK:462 )
在线值:
发帖
回帖
粉丝
5
 
最后于 2019-8-13 13:33 被jux1a编辑 ,原因:
2019-8-13 11:41
0
游客
登录 | 注册 方可回帖
返回
//