CTF逆向-[watevrCTF 2019]Timeout-WP-远程调试和修改程序当前运行位置RIP
来源:https://buuoj.cn/
内容:无
附件:链接:https://pan.baidu.com/s/1c3l7Fu5xO-j9Wv9iyclJ-g?pwd=5g4a 提取码:5g4a
答案:watevr{3ncrytion_is_overrated_youtube.com/watch?v=OPf0YbXqDm0}
总体思路
打开程序检查其流程
发现异常方法
动调运行该方法以得到flag
详细步骤
-
大ag加密密文识点
-
打开main方法,发现里面没有什么内容,猜测内容在其他没有被调用的方法中
-
找到可疑的方法
-
设置remote debugger,开始动调
- 通过开启一个linux虚机在其内部运行ida的linux_server实现远程调试
-
将
RIP
设置为generate方法的地址0x4006a6
-
注意方法中有个条件判断,同样是将
RIP
设置为判断过后的值 -
得到flag
watevr{3ncrytion_is_overrated_youtube.com/watch?v=OPf0YbXqDm0}
参考文档
- ida远程调试
- 中国某省队CTF集训(逆向工程部分)(已授权)(一)
- 基础加密方式例如
XXTEA
、Base64
换表 - Python库
Z3
方程式、不定式等的约束求解
- 基础的假跳转花指令(脏字节)
- 非自然程序流程
- 扁平化程序控制流
- OLLVM程序流程(虚拟机壳) 很难一般不考
- ida里面按
X
键跟踪,寻找所有Ty
为w
的引用(即类型是写入的),通常就是关键位置
- 基础加密方式例如
- 中国某省队CTF集训(逆向工程部分)(已授权)(二)
- ollydb动调去壳,upx为例子
- python的逆向和自定义虚拟指令
- 使用pycdc 提取码:dorr 解密python编译的exe或者pyc
- 逐条去解析用py字典手动实现的指令调用
- C++编译的程序的逆向
- 中国某省队CTF集训(逆向工程部分)(已授权)(三)
-
简单模运算加密
-
base58 寻找一下特别大的数,这种数通常是算法的标识,或者ida7.7版本以上自带的
find crypt
插件ctrl+alt+f
-
常见的关键位置是有新的内存分配的地方通常是关键地方,或者函数中间突然return的地方也是
-
迷宫题 注意绘制出来就好
-
动调题
- 注意观察会执行的反调试分支,例如出现
int 3
,需要跳过去
- 注意观察会执行的反调试分支,例如出现
-