171203 逆向-JarvisOJ(软件密码破解-3)(2)
来源:互联网 发布:vue.js修改data 编辑:程序博客网 时间:2024/05/02 19:21
1625-5 王子昂 总结《2017年12月3日》 【连续第429天总结】
A. JarvisOJ-Re-软件密码破解-3(2)
B.
看来短时间还搞定不了这题了……
上回说到题目中最后计算了一个区域的值的长度,准备研究它的来源
通过查找交叉引用发现了这个地方:
OD跟踪也可以发现确实是这里在负责写入
里面有一些机制来判断数字范围,例如必须为十六进制大写数字,否则将直接return结束该函数
利用这个机制倒是可以写出长度为8的字符串,例如123456780xxxxxxx
但是此时确定按钮又不可用了,原因出在最后
return strlen(byte_571458) != 8
而这个函数的返回值被用在有效性的设置上
v5 = sub_4017C0(MultiByteStr) != 0; v6 = CWnd::GetDlgItem(v1, 1); CWnd::EnableWindow(v6, v5);
因此这就陷入了一个矛盾的境地–“确定”按钮可用需要长度非8,成功提示则需要长度为8
len和test cl, cl的原理是相同的,因此没有漏洞可以利用
从另一方面来考虑,由于FLAG的唯一性,所以自由组合的flag肯定是不可能的,这里必然不是真正的解题点
找了一圈也没发现,于是去找WriteUp
http://www.mottoin.com/90073.html
这里给出了一些提示,但是太过简略所以还是挺困难的
首先存在很多反调,这个我发现了,但是由于没什么影响所以没太在意
另一方面关键函数是sub_401970,而我虽然在交叉引用中看到这个函数对关键区域有读写,但是却根本没有注意它
学着对其下断,整个运行过程中也没有调用
正当我自暴自弃地继续运行的时候,发现当程序走向错误路径时
这里[edx]的内容是输入的第2、3个字符,所以jmp必然会引起错误
而之前运行的时候从来没有异常结束的情况
于是运行,发现程序在sub_401970的地方断下了!
说明这是个SEH(异常处理结构)
于是在OD中查看SEH链
果然其中有一些函数插入的程序,这点是我大意没有注意到
但是sub_401970的调用堆栈中也没有看到与SEH链中相重合的内容……
虽然可以确定sub_401970的调用方式肯定是SEH,但是还没搞明白是谁在调用,怎么调用的,下一步研究这一点
另一方面sub_401970对关键区域的读写还需要进一步分析,从而得到flag
C. 明日计划
软件密码破解-3(3)
- 171203 逆向-JarvisOJ(软件密码破解-3)(2)
- 171204 逆向-JarvisOJ(软件密码破解-3)(3)
- 171202 逆向-JarvisOJ(软件密码破解-3)(1)
- 171201 逆向-JarvisOJ(软件密码破解-2)
- 171225 逆向-JarvisOJ(DebugMe)(2)
- 171130 逆向-JarvisOJ(Fibonacci)
- 171223 逆向-JarvisOJ(EvilExe)
- 171209 逆向-JarvisOJ(病毒数据分析)(3)
- 171207 逆向-JarvisOJ(病毒数据分析)(2)
- 171205 逆向-JarvisOJ(文件数据修复)
- 171206 逆向-JarvisOJ(病毒数据分析)(1)
- Jarvisoj 逆向总结
- 吾爱破解新手教程(2)- 破解,逆向,安全
- Android数据库加解密逆向分析(三)——微信数据库密码破解
- 171219 JarvisOJ(DebugMe)(1)
- jarvis oj 软件密码破解-3 Writeup
- 【MyEclipse 2015】 逆向破解实录系列【3】(纯研究)
- 【MyEclipse 2015】 逆向破解实录系列【2】(纯研究)
- VUE 父组件向子组件传值,子组件向父组件传值
- 【bzoj4566】[Haoi2016]找相同字符
- Eclipse 插件开发 -- 深入理解菜单(Menu)功能及其扩展点
- Let's Encrypt免费SSL证书
- C++Primer习题第十二章
- 171203 逆向-JarvisOJ(软件密码破解-3)(2)
- SSM整合(2): spring 与 mybatis 整合
- 未初始化和非法的指针
- ios-三方框架
- 机器学习作业8
- 常用linux命令(ubuntu)
- 团体程序设计天梯赛-练习集 L1-031. 到底是不是太胖了
- python各种进制求值
- html基本简单标签