文章目录

  • 前言
  • Hello CTF
  • IDA反汇编
  • Flag值计算
  • 总结

前言

交互式反汇编器专业版(Interactive Disassembler Professional),人们常称其为 IDA Pro,或简称为 IDA。是目前最棒的一个静态反编译软件,为众多 0day 世界的成员和 ShellCode 安全分析人士不可缺少的利器!IDA Pro 是一款交互式的,可编程的,可扩展的,多处理器的,交叉 Windows 或 Linux WinCE MacOS 平台主机来分析程序, 被公认为最好的花钱可以买到的逆向工程利器。IDA Pro 已经成为事实上的分析敌意代码的标准并让其自身迅速成为攻击研究领域的重要工具。它支持数十种 CPU 指令集其中包括 Intel x86,x64,MIPS,PowerPC,ARM,Z80,68000,c8051 等等。

本文通过攻防世界一道逆向题目 Hello, CTF 来入门学习下 IDA Pro 反汇编神器的使用和 exe 文件的逆向分析。

Hello CTF

题目如下,附件下载地址:
下载后是个 exe 的文件,双击执行后如下:

应该是需要输入正确的字符串才能得到想要的结果。

IDA反汇编

1、使用查壳工具查看目标 exe 文件,无壳,32位:

2、将目标 exe 文件拖入 IDA 神器:
3、点击 Tab 健或者 F5 键,可对程序进行反编译并查看伪代码:

4、完整代码如下:

int __cdecl main(int argc, const char **argv, const char **envp)
{int i; // ebxchar v4; // alint result; // eaxint v6; // [esp+0h] [ebp-70h]int v7; // [esp+0h] [ebp-70h]char Buffer[2]; // [esp+12h] [ebp-5Eh] BYREFchar v9[20]; // [esp+14h] [ebp-5Ch] BYREFchar v10[32]; // [esp+28h] [ebp-48h] BYREF__int16 v11; // [esp+48h] [ebp-28h]char v12; // [esp+4Ah] [ebp-26h]char v13[36]; // [esp+4Ch] [ebp-24h] BYREFstrcpy(v13, "437261636b4d654a757374466f7246756e");while ( 1 ){memset(v10, 0, sizeof(v10));v11 = 0;v12 = 0;sub_40134B(aPleaseInputYou, v6);scanf("%s", v9);if ( strlen(v9) > 0x11 )break;for ( i = 0; i < 17; ++i ){v4 = v9[i];if ( !v4 )break;sprintf(Buffer, "%x", v4);strcat(v10, Buffer);}if ( !strcmp(v10, v13) )sub_40134B(aSuccess, v7);elsesub_40134B(aWrong, v7);}sub_40134B(aWrong, v7);result = --Stream._cnt;if ( Stream._cnt < 0 )return _filbuf(&Stream);++Stream._ptr;return result;
}

代码第 36 行处进行了一个字符串比较,如果 v10 的值等于 v13 的值会反馈一个 success 的输出。v13 的值在第 15 行给出,因此需要知道 v10 是怎么处理的。

代码的第 18 行对 v10 进行了初始化,并在 32 行进行了拼接处理。分析 26-35 行的循环,其逻辑是:依次取出用户输入字符串的字符,将字符值的 ASCII 码值转成 16 进制的形式拼接到 v10 中。因此,若想令 v10 的值等于 v13 的值,需将字符串 v13 中的值两个一组,当作16进制的值,换算成ASCII 码并转成对应的字符即可。得到的结果即为 flag,也是要输入的内容。

Flag值计算

上面已经分析了如何获取 Flag 的思路了,下面通过几种方式来计算。

1、Python 代码计算:

# encoding: utf-8
x='437261636b4d654a757374466f7246756e'
y=''
i=0
while(i<len(x)):y+=chr(int(x[i:i+2],16))i+=2
print(y)

在线运行结果如下(获得 flag:CrackMeJustForFun):
执行程序进行 Flag 验证:

2、在线工具自动转换:

总结

关于 IDA Pro 的基础学习,请参考以下文章:

  1. 杨秀璋:网络安全自学篇(五)| IDA Pro反汇编工具初识及逆向工程解密实战 ;
  2. CS基础:ida的基本使用教程(1) ;
  3. IDA Pro 破解版下载:IDA Pro 7.5 绿色版(2021.01.28更新)。

CTF逆向-IDA Pro攻防世界Hello CTF相关推荐

  1. CTF逆向-Upx脱壳攻防世界simple unpack

    文章目录 前言 UPX 技术原理 应用范围 软件使用 CTF实战 程序查壳 UPX脱壳 总结 前言 加壳软件分两类: 压缩壳:压缩的目的是减少程序体积,如 ASPack.UPX.PECompact 等 ...

  2. 攻防世界 web高手进阶区 9分题 favorite_number

    前言 继续ctf的旅程 开始攻防世界web高手进阶区的9分题 本文是favorite_number的writeup 解题过程 进入界面 简单的代码审计 首先是个判断,既要数组强等于,又要首元素不等 然 ...

  3. 攻防世界 web高手进阶区 10分题 weiphp

    前言 继续ctf的旅程 开始攻防世界web高手进阶区的10分题 本文是weiphp的writeup 解题过程 进入界面 点击 进入一个登陆界面 没有注册 那肯定得找源码了 惯例源码+御剑 发现git泄 ...

  4. 攻防世界 web高手进阶区 8分题 Web_python_block_chain

    前言 继续ctf的旅程 开始攻防世界web高手进阶区的8分题 本文是Web_python_block_chain的writeup 解题过程 这是个区块链题 这..裂开了啊 没搞过区块链 从零开始学习 ...

  5. 攻防世界 web高手进阶区 9分题 bilibili

    前言 继续ctf的旅程 开始攻防世界web高手进阶区的9分题 本文是bilibili的writeup 解题过程 进来界面 这尼玛出题人是黑还是粉啊 笑死 看题目意思是买lv6 惯例源码+御剑 没发现什 ...

  6. 攻防世界 web高手进阶区 7分题Confusion1

    前言 继续ctf的旅程 开始攻防世界web高手进阶区的7分题 本文是Confusion1的writeup 解题过程 进来的界面如下 (后来知道是php vs python的意思,也就是给提示跟pyth ...

  7. 逆向迷宫题总结(持续更新) 2020华南师大CTF新生赛maze,攻防世界新手区:NJUPT CTF 2017,BUUCTF:不一样的flag

    CTF逆向入门:迷宫题学习记录(持续更新) ** 目录 **CTF逆向入门:迷宫题学习记录(持续更新)** (前言) 一. 逆向迷宫题概述 二. 具体题目分析 1. 2019华南师大CTF新生赛maz ...

  8. 2021-11-22~23 Re 攻防世界逆向Exercise区第七题 simple-unpack【T.O.CTF】

    我想到之前在攻防世界做过的新手题,是一道十分简单没有套路的UPX脱壳题,下面借此题来讲解UPX脱壳(静态)的全过程,动态脱壳因为我的win本里的ubuntu还未装好(其实是我不会用,我是菜鸡),因此暂 ...

  9. file upload 攻防世界_菜鸡 CTF 之旅 Writeup (攻防世界)

    前言 我是个菜鸡,菜鸡就要先走新手练习区. 这次 CTF Writeup 的指定训练站点为 攻防世界 新手练习区 Web 区 view_source 题目描述:X老师让小宁同学查看一个网页的源代码,但 ...

最新文章

  1. WD1600AAJS AAKS 固件 数据恢复
  2. vmware workstation虚拟机开机一直黑屏解决方案
  3. android 查找字符在字符串的位置
  4. python识别图片上的文字_Python如何识别图片中的文字 【转】
  5. three.js 把geometry转换成BufferGeometry
  6. 面试:高并发下的流量控制
  7. 为什么物联网大数据平台,使用TDengine,可不要redis, kafka, spark等软件?
  8. Linux 僵尸进程
  9. 计算机网络常用五大领域命令,现代信息技术试题精选
  10. 【报告分享】2020年母婴未来消费新趋势报告.pdf(附下载链接)
  11. 再获数千万融资,湃方科技将工业智联革命进行到底
  12. 排名算法(一)--PageRank
  13. iOS底层探索之多线程(十六)——锁分析(NSLock、NSCondtion、NSRecursiveLock、NSCondition)
  14. python中求众数_Python实现求众数的三种方法
  15. c语言之sizeof与strlen全
  16. 关于java中xml文档解析
  17. win10只能发现部分计算机,Win10的隐藏小秘密,被我发现了
  18. tt服务器系统,TT服务器使用手册.doc
  19. 什么是私域裂变营销?
  20. 8086的储存器编址

热门文章

  1. 盘点最令人难忘的十大谍战剧经典
  2. charles使用的遇到的坑,以及日常使用
  3. mysql连接两个字段_sql如何将二个字段连接在一起
  4. 分支语句和循环语句[一]【详解】
  5. 安利三个好用视频配音乐的软件
  6. 芯准TTE“宏时隙”调度机制 ——策略与参数
  7. 1.3-聊天机器人的模块和框架
  8. 面试专题:QTrade(苹果树)面试复盘
  9. 漫画:什么是 “幼态持续” ?
  10. 谷歌“隐私沙盒”引争议,广告业务与用户隐私难平衡?