CTF逆向题目解题思路

admin 2024年12月16日23:11:21评论17 views字数 1632阅读5分26秒阅读模式
CTF逆向题目解题思路
CTF逆向题目解题思路
CTF逆向题目解题思路

安全君呀设为"星标️"

第一时间收到文章更新

声明: 安全君呀 公众号文章中的技术只做研究之用,禁止用来从事非法用途,如有使用文章中的技术从事非法活动,一切后果由使用者自负,与本公众号无关。

文章声明:本篇文章内容部分选取网络,如有侵权,请告知删除。

CTF(Capture The Flag)比赛中的逆向题目通常要求参赛者对给定的二进制文件(如可执行程序、库文件等)进行分析,找出其中的漏洞、隐藏信息或者实现某些功能的代码。以下是解决逆向题目的一些基本思路和步骤:

  1. 理解题目要求

    • 仔细阅读题目描述,理解需要达到的目标,比如找到某个隐藏的字符串、破解一个加解密算法、获取一个flag值等。
  2. 静态分析

    • 使用反编译工具(如IDA Pro、Ghidra、Binary Ninja)对二进制文件进行反编译,查看代码的结构和逻辑。
    • 分析程序的入口点、函数调用、重要的代码段和数据段。
    • 查看字符串表,寻找可能的提示或敏感信息。
  3. 动态分析

    • 使用调试器(如GDB、OllyDbg、x64dbg)运行程序,观察程序的执行流程和行为。
    • 设置断点,跟踪函数调用和返回值,监控内存和寄存器的变化。
    • 使用动态二进制分析工具(如Dynomite、Intel Pin)收集运行时信息。
  4. 寻找漏洞

    • 分析程序中可能存在的漏洞,如缓冲区溢出、格式化字符串漏洞、整数溢出等。
    • 利用漏洞进行进一步的分析,比如利用缓冲区溢出改变程序的执行流程。
  5. 代码还原

    • 尝试将汇编代码还原成高级语言代码,以便更好地理解程序逻辑。
    • 重构程序的控制流图(CFG),帮助理解复杂的跳转和逻辑结构。
  6. 密码学分析

    • 如果题目涉及加密或解密,分析加密算法的实现,寻找密钥或算法的弱点。
    • 使用密码学工具和库(如OpenSSL、Crypto++)辅助分析。
  7. 利用已知漏洞

    • 检查程序是否使用了已知有漏洞的库或框架,利用这些漏洞获取额外的信息或权限。
  8. 社会工程学

    • 有时候逆向题目会包含一些需要社会工程学技巧的信息,比如隐藏在注释中、硬编码的密码等。
  9. 文档和资源

    • 查阅相关的开发者文档、API文档、开源项目,了解程序可能使用的技术和算法。
  10. 合作与交流

    • 在解题过程中,与其他参赛者或团队成员交流思路和发现,协作解题。
  11. 编写Exploit

    • 如果找到了漏洞或者理解了程序的保护机制,尝试编写exploit代码来利用这些漏洞。
  12. 测试和验证

    • 在安全的环境下测试你的发现和exploit代码,确保它们能够稳定工作。

逆向题目的难度各异,解题过程可能需要综合运用多种技能和工具。耐心和细致的分析是解决逆向题目的关键。

下面分享三道例题与大家分享学习交流。

CTF逆向题目解题思路
题目一
CTF逆向题目解题思路

运行程序,需要输入passwd

CTF逆向题目解题思路

IDA打开程序,按shift+f12找到字符串,找到主程序入口F5查看伪代码

CTF逆向题目解题思路

v4是下标与自身内容相加,将输入与修改后的v4比较,如果相等就打印机GOOD。

CTF逆向题目解题思路

本题有两种做法

CTF逆向题目解题思路
方法一
CTF逆向题目解题思路

一是写算法进行逆向

b=''  a=[0x66,0x6B,0x5F,0x64,0x77,0x62,0x5F,0x6D,0x18,0x60,0x6A,0x15,0x56,0x6C,0x12,0x55,0x55,0x51,0x63,0x54,0x53,0x50,0x5C,0x66]  >>> for i in range(0,len(a)):  a[i]+=i  >>> for i in range(0,len(a)):  b+=chr(a[i])  >>> b  'flag{get it by debugger}'
CTF逆向题目解题思路
方法二
CTF逆向题目解题思路

设置断点进行调试

CTF逆向题目解题思路

运行到断点处已计算出flag,双击进入得到flag

CTF逆向题目解题思路
CTF逆向题目解题思路
CTF逆向题目解题思路
题目二
CTF逆向题目解题思路

程序为64位ELF程序

CTF逆向题目解题思路

用IDA查看伪代码

CTF逆向题目解题思路
CTF逆向题目解题思路

使用gdb进行调试 得到flag

CTF逆向题目解题思路
CTF逆向题目解题思路
题目三
CTF逆向题目解题思路

更改程序跳转流程

CTF逆向题目解题思路

更改程序跳转,跳转到 _main_0更改为:跳转到flag计算函数(sub_45E940 上面的函数)

CTF逆向题目解题思路
CTF逆向题目解题思路

保存更改后的程序运行得到flag:

CTF逆向题目解题思路

Tips

欢迎大家在下面点赞评论加关注,让我们一起在网安之路越走越远!!!

CTF逆向题目解题思路
点击蓝字 关注我们

原文始发于微信公众号(安全君呀):CTF逆向题目解题思路

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月16日23:11:21
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CTF逆向题目解题思路https://cn-sec.com/archives/3503274.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息