-
-
看雪CTF2018第四题wp新手版本
-
发表于:
2018-6-24 03:03
5229
-
肝这道题从第一天12点一直刚到第二天4点钟 完成的部分是把AES部分分析完 以及分析出RSA部分一小点点东西 知道了超出自己能力范围之后 就放弃了这道题 答应师傅不作弊 找师傅要了提示 然后才把剩下的部分做完 所以只是提交wp 没有提交flag 希望管理员大大不要生气
wp部分是我结合自己的思路 和师傅给我的提示写的 争取能够思路清晰 然后后半部分会有一些未完成部分我自己做的思路 有很多困惑 希望能得到大家的建议和解答
一.自己分析部分
1.分析大概流程: 下载文件运行如图
所以简单的if else
我到现在都还是新手 所以到这一部分我想讲一下我目前悟出来的查找main函数的方法(我很长一段时间都不能查找到main函数。。) 希望对和我一样我的小伙伴们能有所帮助
1.查找401000, 大多数懒的作者写的程序都可以直接把这里视为main函数起点
2.查找API: MessageBox之类
3.查找特征字符串 比如上面的error
4.这是最近悟出来的 比如如果输入数字 那么%d这里是关键 向上面这种 搜索%s
这里我选择的是第3种 IDA如图
主要是看pause 用vs的语句为了方便观察 都是system("pause") 否者会一闪而过 而且此处%s和界面的欢迎信息对应 其实也可以查找
点击pause 查看引用
猜测没错 所以这里往上拖 得到main函数地址为
IDA无法f5 所以看od汇编分析流程 大概如下
动态调试
a.观察经过4011e0 欢迎信息打印 所以此函数打印信息
b.注意查看堆栈 可以发现401078 这个函数生产success(ebp - 14) 和 error(ebp - 20) 字符串(重要 后面要使用这个信息分析流程)
c.42e3c0输入字符串
打开ida 点击14 如图
可以看到403299是我们的分析重点 这里会打印成功的信息 所以我们查看满足什么条件 程序会到这里
回溯流程发现关键跳转如图 edx == 2则可成功
观察发现-4, -8 分别为两个函数返回值 仔细思考为什么常数是2 so: 1 + 1 = 2 即两个函数都必须为真 动态分析(查看调用这两个函数的函数堆栈) 发现第一个函数检验input[3:] , 第二个函数检验input[0:2](input为输入字符串) 因为第二个比较小 分析第二个 f5 如图
指令解析失败 我没学过脱壳花指令 所以准备放弃的 用OD 查看了一下
发现逻辑太简单了(想不通可以动态跟踪 记得是f7 ) 程序最终可以目的执行到 402e5a(中间db不影响程序执行 但是破坏了字节的对齐 所以ida无法f5) 把这一段nop掉就可以 nop之后如图
ida重新f5如图
程序追溯如下
v19 == v23 from v11 from v27
40d760: AES加密 生成密钥
40dc40: AES加密 生成密文
40100f: 获取v11的ascii 放到v23当中
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2018-6-24 10:50
被wjzid编辑
,原因: