题目信息
解题步骤
IDA载入直接F5
观察一些函数
发现了关键点
1 | for (i = 0; i <= 4; ++i) |
文章作者: 末心
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 末心的小博客!
相关推荐

2025-10-27
【BUUCTF】REVERSE-刷题记录-SimpleRev
题目信息 解题步骤 分析main 12345678910111213141516171819202122int __fastcall __noreturn main(int argc, const char **argv, const char **envp){ int v3; // eax char v4; // [rsp+Fh] [rbp-1h] while ( 1 ) { while ( 1 ) { printf("Welcome to CTF game!\nPlease input d/D to start or input q/Q to quit this program: "); v4 = getchar(); if ( v4 != 100 && v4 != 68 ) break; Decry("Welcome to CTF game!\nPlease input d/D to start or input q/Q to...

2025-10-26
【BUUCTF】REVERSE-刷题记录-easyre
题目信息 解题步骤先用DIE分析,发现是64位C程序 使用IDA分析: 也就是输入两个相同字符,就可以拿到flag 1flag{this_Is_a_EaSyRe}

2025-10-27
【BUUCTF】REVERSE-刷题记录-helloword
题目信息 解题步骤 一个Android逆向 IDA查看 让我看看有多少人不知道IDA其实也可以看Android? JEB Pro 12345678910111213141516171819202122232425package com.example.helloword;import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import android.view.Menu;import android.view.MenuItem;public class HelloWorldActivity extends ActionBarActivity { @Override // android.support.v7.app.ActionBarActivity protected void initializeActivity(Bundle savedInstanceState) { super.initializeActivity(saved...

2025-10-26
【BUUCTF】REVERSE-刷题记录-reverse1
题目信息 解题步骤 编译器为 MSVC 19.00,对应 Visual Studio 2015 或 2017 版本。 使用ida查看: 12345678for ( j = 0; ; ++j ){ v10 = j; if ( j > j_strlen(Str2) ) break; if ( Str2[j] == 111 ) Str2[j] = 48;} Str2 是一个字符串(全局变量或常量) 遍历 Str2,把所有字符 'o'(ASCII 111)替换成 '0'(ASCII 48) 条件是 j > j_strlen(Str2) 才跳出 → 实际是 j <= len 时继续 所以这是一个 字符串预处理:将 Str2 中的 o → 0 Str2 是“正确 flag”的模板,但被混淆了(用 o 代替 0) 12sub_1400111D1("input the flag:");sub_14001128F("%20s", Str1); sub_140...

2025-10-26
【BUUCTF】REVERSE-刷题记录-reverse2
题目信息 解题步骤使用DIE分析: 使用IDA分析 12v8 = __readfsqword(0x28u); // Canary,防栈溢出pid = fork(); // 关键!创建子进程 fork() 的行为回顾 fork() 创建一个子进程,复制父进程的内存空间 子进程返回 0 父进程返回子进程 PID 之后两个进程独立运行 所以: 12if (pid) { /* 父进程 */ } else { /* 子进程 */ } flag 字符串到底被谁修改了?看这段代码: 12345678else{ for ( i = 0; i <= strlen(flag); ++i ) { if ( flag[i] == 105 || flag[i] == 114 ) flag[i] = 49; }} 105 → 'i' 114 → 'r' 49 → '1' 所以:子进程把 flag 中的 &#...

2025-10-27
【BUUCTF】REVERSE-刷题记录-reverse3
题目信息 解题步骤 main函数12345// attributes: thunkint __cdecl main(int argc, const char **argv, const char **envp){ return main_0(argc, argv, envp);} 先理解一下现在的代码: 1234567891011121314151617181920212223242526272829303132333435int __cdecl main_0(int argc, const char **argv, const char **envp){ size_t v3; // eax const char *v4; // eax size_t v5; // eax char v7; // [esp+0h] [ebp-188h] char v8; // [esp+0h] [ebp-188h] signed int j; // [esp+DCh] [ebp-ACh] int i; // [esp+E8h] [ebp-A0h] ...
公告
学而不思则罔,思而不学则殆









