CTF学习-逆向解题思路

持续更新

一、通用过程

通过file命令查看文件类型,判断是ELF还是PE,32位还是64位。

通过strings并重定向标准输出,然后搜索大括号 { ,看看是否能直接得到flag.

将程序运行一下,心里有个数。

通过ExeinfoPe查壳,如果有壳,通过upx -d [ 文件名 ] 去壳。

通过各种工具将文件反汇编+反编译(如果比较刚猛,也可以直接看二进制指令)

阅读代码,判断题型。

TIPS:

如果反编译后函数特别少,可能是因为加了壳。

如果反编译后找不到main函数,先通过CTRL+F搜一下,搜不到就说明函数名被隐藏了,这时候跑一下程序,然后看一下程序开始时的那串提示信息,在IDA中CTRL+S切换到rodata段,找到这个字符串,然后看它是在哪里被调用的即可找到main

一般而言,Java和Python的题会简单一点,因为反编译后的代码可读性更强。

二、手动破解

题型识别:要求你输入一个字符串,然后程序把你输入的字符串加密,再把加密后的字符串和存储在程序里的密文对比。显然你输入的即为flag,你需要根据密文和加密过程,反向推出flag.

自己写个脚本,根据加密算法进行解密即可。

请注意,当加密算法很复杂时,可能是用的某种加密算法。这时候应该善用搜索引擎去搜索现成的解密算法。

三、迷宫问题

题型识别:最大的特征是存在4组判断,分别对应上下左右的移动操作,以及一个合法性检测,判断你是否撞墙。

解题方法很简单,找到迷宫字符串,它可能二维可能一维,但在C中必然是以一维形式存储,把它转换回二维迷宫。然后从起点走到终点的操作序列即为最终的flag.

有一个潜在的难点在于如何记录横纵坐标。现在见过的几个操作是

开两个数组/两个变量,分别对应横纵坐标。

用1个8字节的变量,高低4位分别记录横纵坐标。(此时反汇编代码中可能会存在类似于LOWBYTE、HIBYTE这种)参考博客

四、手动绕开

题型识别:程序会主动输出flag,但是输出的是密文,程序内置了解密函数,但是这个函数不会被执行,此时可以尝试根据解密函数,自己手动破解,但是更好的做法是修改源代码。

IDA中修改完源码记得要保存到源程序,否则不生效。

修改源代码,往往是汇编代码,不可随意更改,应该保证对应的机器指令占的字节数不发现改变,可以减少,然后通过nop填充,但一般不可增多,因为会影响到后面代码的地址,从而影响到整个程序。

常用汇编命令与其机器指令:

je、jne、jmp系列、nop、xor等。

需要注意的是不同CPU的机器指令可能不同,请使用自己CPU对应的机器指令。尤其不要拿着Intel的机器指令拿去套AMD的CPU

CTF学习-逆向解题思路相关推荐

  1. CTF学习-密码学解题思路

    CTF学习-密码学解题思路 密码学持续更新 密码学概述 密码学的发展 第一个阶段是从古代到19世纪末-古典密码 (classical cryptography) 第二个阶段从20世纪初到1949年-近 ...

  2. CTF学习-web解题思路

    CTF学习-web题思路 持续更新 基础篇 1.直接查看源代码 2.修改或添加HTTP请求头 常见的有: Referer来源伪造 X-Forwarded-For:ip伪造 User-Agent:用户代 ...

  3. i春秋CTF训练营Rotated!解题思路及其过程。

    遥想当年参加CTF大赛从一个是用别人脚本到自己写脚本的脚本小子,转眼间过去这么多年,现在重拾参加一下CTF结果最简单的题目都不会了,我不配 目录 1.拿题目 2.凯撒解密 4.开始解密 5.解密成功 ...

  4. AES加密原理及简单逆向解题思路 - 从0开始的repwn 02

    先来简述一下aes加密 参考 十分钟读懂AES加密算法_Lee.rw的博客-CSDN博客_aes加密 AES加密 - block2016 - 博客园 (cnblogs.com) AES加密算法的详细介 ...

  5. 网络安全ctf比赛/学习资源整理,解题工具、比赛时间、解题思路、实战靶场、学习路线,推荐收藏!...

    对于想学习或者参加CTF比赛的朋友来说,CTF工具.练习靶场必不可少,今天给大家分享自己收藏的CTF资源,希望能对各位有所帮助. CTF在线工具 首先给大家推荐我自己常用的3个CTF在线工具网站,内容 ...

  6. 【学习总结】ctf隐写初阶解题思路与方法

    作为ctf中相对较为简单的题目,隐写题更适合初学者上手和提高初学者的兴趣.本人也对隐写术很感兴趣,于是尝试着对自己目前所学的隐写解题思路和工具的使用做一个总结.由于水平有限,总结可能会有错误的地方,希 ...

  7. CTF|pwn栈溢出入门题level3解题思路及个人总结

    CTF|pwn栈溢出入门题level3解题思路及个人总结 解题思路 拿到题目将文件下载下来拖入ubuntu 发现这一次的文件比较特殊:是一个linux环境下的压缩包,自然而然想到的是解压它 通过命令行 ...

  8. CTF Reverse fantasy.apk解题思路

    CTF Reverse fantasy.apk解题思路 一.文件分析 二.解题思路 一.文件分析 文件和解题脚本看这里 动态运行界面提示输入信息进行check chec按钮点击后出出现一个Toast, ...

  9. 2020年11月份某kh比赛部分CTF赛题求大佬解题思路

    2020年11月份某kh比赛部分CTF赛题求大佬解题思路 只down下来misc和密码两类题 麻烦大佬们搞一搞这四道题 只down下来misc和密码两类题 百度网盘赛题分享 链接: https://p ...

最新文章

  1. Linux下的进程之进程管理
  2. git svn 一个疯(傻)子的想法
  3. leetcode 136. Single Number
  4. 算法刷题必会知识:由数据范围反推算法时间复杂度
  5. 你还在用 Swagger?试试这个神器!
  6. LeetCode 1453. 圆形靶内的最大飞镖数量(几何题)
  7. SystemUI之状态栏notification icon加载流程
  8. Linux内核源代码分析——可执行文件header处理(二进制文件读写范例,写DUL工具入门指引)...
  9. 21.5 英寸 iMac 供应减少:是新品发布的节奏吗?
  10. VC预定义常量WIN32、_WIN32、_WIN64分析(转载)
  11. 降维系列之 AutoEncoder 自动编码器
  12. 安装nvidia digits
  13. 《运筹学》CSU作业答案
  14. 手机查看基站位置信息
  15. 优秀站长工具推荐之百度统计热力图用户体验要素
  16. 转载 - Linux使用技巧锦集
  17. 推荐几个不错的黑科技网站
  18. RTL9010调试记录
  19. ICC---data setup
  20. 在代码中实现对各进程内存的监控

热门文章

  1. 不同坐标系下角速度_轨道、重力场与坐标系的混乱关系
  2. Pr 入门教程 如何使用超级键效果?
  3. R语言数据分析笔记——t检验(含正态性检验和方差齐性检验在SPSS和R语言中的操作t检验(单样本、双独立样本、配对样本)在Excel、SPSS、R语言中的操作)
  4. 随机点名器1(Java数组基础)
  5. can收发器 rx_Microchip工程师社区 - 两组PIC18F25K80+CAN收发器的CAN通讯 - 16位MCU及DSC - 麦田论坛...
  6. Kali-WIFI攻防(二)----无线网络分析工具Aircrack-ng
  7. 二级路由dhcp关闭连不上wifi_无线宽带路由器除了WiFi上网还能有什么用,如何正确设置DHCP服务...
  8. Python单元测试详解
  9. SQL Server是什么?SQL Server详细介绍
  10. 【Renesas RA6M4开发板之UART与Serial studio串口交互】