首页
社区
课程
招聘
BUUCTF-reverse1解题思路
发表于: 2024-4-2 11:27 8008

BUUCTF-reverse1解题思路

2024-4-2 11:27
8008

使用IDA打开reverse_1.exe
IDA打开之后,无明显特征。shift+F12查看字符串,发现flag提示
图片描述
跳转过去之后,按X查看交叉引用
图片描述
通过流程图,发现用于判断是否正确获取flag的语句为汇编指令test,eax,eax,然后通过jz指令跳转到flag
图片描述
直接F5查看伪代码
图片描述
可以看到this is the right flag字符,说明直接满足if条件即可得到正确的flag
strncmp(&Str1, Str2, v3)用于比较str1与str2字符串,相等时返回0。
!strncmp()即需要满足str1=str2
双击,查看str2字符串
图片描述
在比较之前存在for循环,该循环的作用是将str2字符串中的字母o改成数字0
图片描述
因此得出flag为{hell0_w0rld}

调试reverse_1.exe,搜索字符串
图片描述
点击跳转到input th flag处。
图片描述
此处for循环,用于遍历字符串hello_world
图片描述
当eax等于字母o时,替换字母o为数字0
图片描述
00007FF7DE461970处下断点
图片描述

第一条指令是将输入的字符赋值给rdx
第二条指令是将替换过的字符串hell0_w0rld赋值给rcx
图片描述
通过strncmp()函数比较两个字符串,相等时返回0
图片描述
再通过test指令以及je指令来进行条件判断

图片描述
获取到flag为{hell0_w0lrd}

本次CTF题目属于入门题型,之所以写这边文章的原因是由于网上的解题思路思路都是使用IDA伪代码进行解答的,因此本文本着学习动态调试的目的去解题。
本次CTF题目属于入门题型,之所以写这边文章的原因是由于网上的解题思路思路都是使用IDA伪代码进行解答的,因此本文本着学习动态调试的目的去解题。
lea rdx,qword ptr ds:[7FF7DE46C000]
lea rcx,qword ptr ss:[rbp+28]
lea rdx,qword ptr ds:[7FF7DE46C000]
lea rcx,qword ptr ss:[rbp+28]

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 2
支持
分享
最新回复 (2)
雪    币: 2937
活跃值: (30841)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
感谢分享
2024-4-5 21:35
1
雪    币: 2169
活跃值: (540)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我最后用GPT解决的
2024-4-30 16:07
0
游客
登录 | 注册 方可回帖
返回
//