首页
社区
课程
招聘
看雪CTF2018第四题wp新手版本
发表于: 2018-6-24 03:03 5228

看雪CTF2018第四题wp新手版本

2018-6-24 03:03
5228

肝这道题从第一天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当中

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2018-6-24 10:50 被wjzid编辑 ,原因:
收藏
免费 1
支持
分享
最新回复 (6)
雪    币: 620
活跃值: (372)
能力值: (RANK:150 )
在线值:
发帖
回帖
粉丝
2
看雪的od有反反调试  吾爱的没有  我当时碰到了了反调试  反调试的思路是如果检测到被调试  就执行反调试代码(创建自身子进程)    前面说了如果  所以把jnz改为jmp就可以了  后续补充。。。还有补充一点  前面有两个检测  一个是长度小于0x17,  前三位必须为数字  忘了写了  抱歉..
2018-6-24 03:08
0
雪    币: 620
活跃值: (372)
能力值: (RANK:150 )
在线值:
发帖
回帖
粉丝
3
必须为数字  上面讲错了。。
2018-6-24 10:39
0
雪    币: 16506
活跃值: (6392)
能力值: ( LV13,RANK:923 )
在线值:
发帖
回帖
粉丝
4
确实我也是去年开始学的,还有很多不足的地方!看雪是个非常好的地方,学习氛围非常好的!各位师傅包括版主人也很好!
2018-6-24 13:44
0
雪    币: 5676
活跃值: (1303)
能力值: ( LV17,RANK:1185 )
在线值:
发帖
回帖
粉丝
5
main函数,xref  ExitProcess,找他的参数是哪个函数的返回值,那个函数就是main
当然要从入口点那块开始找
2018-6-25 18:45
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
16进制转10进制这种大数怎么转换,有工具吗?
2018-7-25 11:16
0
雪    币: 620
活跃值: (372)
能力值: (RANK:150 )
在线值:
发帖
回帖
粉丝
7
之幽灵 16进制转10进制这种大数怎么转换,有工具吗?
有的 在线网站 https://www.branah.com/ascii-converter 希望对您有帮组
2018-7-27 21:38
0
游客
登录 | 注册 方可回帖
返回
//