CTF逆向"/>
CTF逆向
CTF逆向-[SCTF2019]creakme-WP-基于AES加密算法下的保护:反调试及except_handler和SMC
来源:/
内容:无
附件:链接:=g965 提取码:g965
答案:sctf{Ae3_C8c_I28_pKcs79ad4}
总体思路
简单反调试的patch
_except_handler的知识点
smc得到解密算法,得到题目的flag密文
使用ctrl+alt+f发现encode方法是aes加密
猜测得到key和iv,解密得到flag
详细步骤
-
检查文件信息
-
经过检查发现可能存在检查debugger的,进入该方法,找到所有退出进程的地方,nop掉
-
点击
edit
-patch program
-apply patches to...
应用上面的nop- 开始动调,发现有DebugBreak的时候点击
Yes pass to app
将异常给app自行处理。 - 发现调用smc方法进行了自解密SMC入门学习
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ucs7dhU8-1649549533259)(.image.reference/main/image-20220410072437865.png)]
- 开始动调,发现有DebugBreak的时候点击
-
在
dword_404000
按c将其转换成代码,再按p将其声明为函数,再按F5得到伪代码- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b2MKXyiu-1649549533259)(.image.reference/main/image-20220410072821803.png)]
-
在
return
处断点,让其运行完,发现全局变量的值发生了改变,变成了nKnbHsgqD3aNEB91jB3gEzAr+IklQwT1bSs3+bXpeuo=
,按shift+e
复制该变量- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BbWYNz3r-1649549533259)(.image.reference/main/image-20220410073031505.png)]
-
继续动调,回到主程序,随便输入一些值例如
1111111111111111
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VK5DF4bN-1649549533260)(.image.reference/main/image-20220410073201350.png)]
-
发现调用
f_encode
方法后得到了v_encode_result
,并且拿来和v_key
进行比较- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iT7qyXE4-1649549533260)(.image.reference/main/image-20220410073543754.png)]
-
重新开始动调,进入
f_encode
方法,发现v_input_address的值为0x7d2660
,按下g跳转过去发现这里是我们的输入值- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zXGzYHzP-1649549533261)(.image.reference/main/image-20220410073838639.png)]
-
按下
ctrl+alt+f
查看编码发现存在大量加密算法,同时在f_encode
方法中发现了aes
算法,标注出来- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-opeAseH8-1649549533261)(.image.reference/main/image-20220410074455282.png)]
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jUyqtMld-1649549533261)(.image.reference/main/image-20220410074504035.png)]
-
在该方法中发现了一个字符串
sycloversyclover
,双击进去,发现上面还有个字符串,按下x跟进其出现位置- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-45jP0XEQ-1649549533262)(.image.reference/main/image-20220410074544885.png)]
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wx6NbINm-1649549533262)(.image.reference/main/image-20220410075915223.png)]
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CjoWGAo4-1649549533263)(.image.reference/main/image-20220410075942343.png)]
-
猜测上面两个字符串分别是AES加密的密钥和偏移量,
f_encode
执行完以后发现值变成了ZJ+E8g0oeUq671t/NxUXWcI6ybXkZP3O6hbOC0s+xBU=
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4d55SqK0-1649549533263)(.image.reference/main/image-20220410075026808.png)]
-
使用
cyberchef
测试- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jilq4jj0-1649549533264)(.image.reference/main/image-20220410075310928.png)]
-
解密题目的密文,得到flag
sctf{Ae3_C8c_I28_pKcs79ad4}
参考文档
- SMC入门学习
- 中国某省队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
,需要跳过去
- 注意观察会执行的反调试分支,例如出现
-
大小端序
-
更多推荐
CTF逆向
发布评论