DbAPPSec CTF一道题的分析
来源:互联网 发布:淘宝代运营收费标准 编辑:程序博客网 时间:2024/06/03 21:55
首先运行这个程序,观察它的行为。
用exeinfo打开,发现没有加壳。
用IDA打开,查看F5反编译之后的代码。
MSDN上查阅相关函数可以得知WinMain中是一个消息循环,LoadString函数从资源里加载字符串资源到CString对象里。用Resource Hacker打开它。
这里的快捷键是?或/+ALT,按下快捷键就会弹出About窗口。在WinMain中没有看到有关flag的内容,于是在ollydbg中尝试设置消息断点。
当在程序窗口中按下ALT+?之后ollydbg断在这里。
跟进00401640,同时在IDA中查看。
可以看到在IDA中这一部分代码左边都是红色的,这是因为IDA没有正确识别它们。
问题出在这里,有两条重复的指令。用16进制编辑器把下面那条指令替换成nop,再在IDA中打开。
这次正常了,但是在按下F5时又出现了如图所示的提示。
依次勾选Options->General->Disassembly->Stack pointer,按下ALT+K调整堆栈。
查看F5反编译之后的结果。
sub40101E调用了sub4013A0,从sub4013A0调用的函数和那一串字符串刚好是32位来看,这里应该是MD5加密。
跟进后面调用的sub401005函数,sub401005又调用了sub401590。
这里做了一个异或操作,编写程序来得到运算的结果。
对得到的结果进行MD5解密。
这个值应该被写到00428C54也就是pbData处。
但是WinMain会先对这里做一个memset操作,所以在LoadString函数下断点,断在这里之后memset已经执行完了,这时再在内存中写入123321。
为了能让程序顺利执行到弹出flag的地方,还需要修改前面几处跳转条件。
运行到这里,找到了flag{n0_Zu0_n0_die}。
- DbAPPSec CTF一道题的分析
- 记一道USB流量分析CTF题
- CTF比赛的一道javascript题
- dbappsec
- 一道CTF
- 一道ctf pwn 的思路以及解法
- 一道ctf pwn 的思路以及解法
- 一道逆向CTF题-read asm详解
- 由一道CTF信息泄露题而引发的对git命令的再次温习
- 南邮一道ctf题目关于e的解释
- 记一道CTF题babyphp之学习代码注入
- 南邮CTF逆向题第一道Hello,RE!解题思路
- 2016xctf一道ctf题目
- 一道ctf中的编码问题
- 关于一道招聘题的分析
- 对一道题的算法分析
- 一道有意思的逻辑分析题
- [置顶] 一道js题 的分析历程
- <a>标签不跳转的几种实现方式
- rabbitMq消费者角度:消息分发、消息应答(ACK)、公平分发
- 矩阵连乘
- 对【2017.4.22 B组NOIP提高模拟赛】总结
- mysql 远程登录错误总结
- DbAPPSec CTF一道题的分析
- 【解题报告】Codeforces Round #410 (Div. 2)
- Java设计模式《八》外观模式
- 解决Android浏览器使用七牛上传文件时取不到后缀名
- 6.网络层(4)---IP多播,NAT
- WebView与JS的那些事: 注入JS提取url链接
- 字节转化为结构体BytesToStruct
- ADG主库上归档丢失恢复备库测试
- 关于数据库