DDCTF2019

笔者做了前俩道题。冷不丁过去一个月了、现在在此做一下WriteUp:题目链接:

1:题目1

2:题目2

reverse1:writeup:

1、程序打开后如下所示

2、查壳结果为UPX的壳。

3、UPXSHELL脱壳之后用GHIDRA打开后如下

这就程序大致的流程。我们的关键点在于确定其算法。

4、动态调试。

当我输入aaa时,程序内变成了===

当我输入bbbb时,程序内部变成了<<<<

经计算 我们输入的值在程序逆向思维出来是9E-该数即可。

5、解密

成功拿到flag

2、reverse2 ——WriteUP

1.题目打开后如下:所示

2.PEID查壳结果

ASP的壳,看样子需要手动脱壳.

3.用OD脱壳。

(1)进程序之后按F9找到printf入口点。随后用ODdump直接脱下来

步骤-plugins->ODdumpEx->dump process

4.用IDA打开后查看大致的代码逻辑

看来这题是控制输入的字符串,来对v1进行赋值。并且将结果与DDCTF{reverse+}进行比对。

5.找到要分析函数模块。

经过分析,现然这俩个代码块是我们需要主分析的地方。现在大致内容我们已经理清了,下一步是带壳调试。

6.找到输入函数的规则。

经调试,找到了scanf的输入点。这里我们去看一下对应的IDA函数的位置。

这里的函数过于复杂。引起生理上的不适,因此我选择动态调试分析。就是暴力方法测出输入函数的格式。

经多次检测,输入格式为 以下几个字符0123456789ABCDEF即可,其余的均会爆出invalid input错误。

因此到了下一阶段动态调试。

7.输入字符串后变成的样子。

这里有个需要注意的地方,当程序加壳的时候,会出现这种db 字符,要使用OD analysis重新分析下。

经多次分析,我发现输入的一串字符串变成了base64编码形式

经分析,我发现我输入的一串字符串会被变成16进制,并使用base64编码与结果中的reverse+进行比对。

那接下来就是reverse+解码的时候了。因为base64经编码之后的文本为乱码显示,无法了解内部。我们需要手动解码

8.BASE手动解码。找出REVERSE+对应的64位字符重新编码后,成功拿到FLAG

DDCTF2019逆向分析前俩题WriteUP的更多相关文章

  1. 一个PE文件的逆向分析

    一个PE文件的逆向分析 idf-ctf上有个题,是PE文件的逆向,反正对我来说做出来就是有意思的题,做不出来就没劲.言归正传,下面看一下吧 大家想玩可以去这个地方去拿题http://pan.baidu ...

  2. IM通信协议逆向分析、Wireshark自定义数据包格式解析插件编程学习

    相关学习资料 http://hi.baidu.com/hucyuansheng/item/bf2bfddefd1ee70ad68ed04d http://en.wikipedia.org/wiki/I ...

  3. C++反汇编与逆向分析技术揭秘

    C++反汇编-继承和多重继承   学无止尽,积土成山,积水成渊-<C++反汇编与逆向分析技术揭秘> 读书笔记 一.单类继承 在父类中声明为私有的成员,子类对象无法直接访问,但是在子类对象的 ...

  4. 一文了解安卓APP逆向分析与保护机制

    "知物由学"是网易云易盾打造的一个品牌栏目,词语出自汉·王充<论衡·实知>.人,能力有高下之分,学习才知道事物的道理,而后才有智慧,不去求问就不会知道."知物 ...

  5. [工控安全]西门子S7-400 PLC固件逆向分析(一)

    不算前言的前言:拖了这么久,才发现这个专题没有想象中的简单,学习的路径大致是Step7->S7comm->MC7 code->firmware,我会用尽量简短的语言把前两部分讲清楚, ...

  6. [Android Security] Smali和逆向分析

    copy : https://blog.csdn.net/u012573920/article/details/44034397 1.Smali简介 Smali是Dalvik的寄存器语言,它与Java ...

  7. Android应用安全防护和逆向分析 ——apk反编译

    概述 最近一直在学习Android应用安全相关和逆向分析的知识.现在移动app在安全方面是越来越重视了,特别是那些巨头企业涉及到钱的应用,那加密程度,简直是丧心病狂,密密麻麻.从这里可以看出,对于应用 ...

  8. RE-1 逆向分析基础

    逆向分析基础 0x01-0x0C 本笔记使用汇编指令为x86架构下汇编指令,ARM架构汇编指令不做介绍 0x01. 关于RE 逆向工程(Reverse Engineering RE) 逆向分析方法: ...

  9. 逆向分析objc,所有类的信息都能在动态调试中获取。

    因为objc是动态绑定的,程序运行时必须知道如何绑定,依靠的就是类描述.只要知道类描述是如何组织的就可以获取一切有用的信息.不知道是幸运还是不幸,这些信息全部都在运行的程序中.即使没有IDA这样的工具 ...

随机推荐

  1. MFC编辑框换行

    字符串结尾加上"\r\n": 编辑框属性设置:Auto HScroll为False,Multiline为True,Want Return为True. =============== ...

  2. 初涉KMP算法

    久仰字符串系列理论 KMP 讲解(引用自bzoj3670动物园) 某天,园长给动物们讲解KMP算法. 园长:“对于一个字符串S,它的长度为L.我们可以在O(L)的时间内,求出一个名为next的数组.有 ...

  3. 【Java_多线程并发编程】JUC原子类——AtomicLong原子类

    1. AtomicLong是基本原子类中的一种 AtomicLong是对长整形进行原子操作. 1.1 AtomicLong类的函数列表 // 构造函数 AtomicLong() // 创建值为init ...

  4. 【STL初步】不定长数组:vector + 集合:set + 映射:map

    一.vector 为了节省空间,有时我们会使用动态数组vector. 定义动态数组 vector<类型名>变量名 vector<int>que //定义que为一个int类型的 ...

  5. Python中变量的命名与使用(个人总结)

    与众多编程语言一样,Python变量的命名有一定的规范: 变量名只能包含字母.数字.下划线且不能以数字开头.例如,num_1 为正确命名,而 1_num 则错误. 变量名不允许含空格,但是可以用下划线 ...

  6. Luogu 2627 修建草坪 (动态规划Dp + 单调队列优化)

    题意: 已知一个序列 { a [ i ] } ,求取出从中若干不大于 KK 的区间,求这些区间和的最大值. 细节: 没有细节???感觉没有??? 分析: 听说有两种方法!!! 好吧实际上是等价的只是看 ...

  7. PAT Basic 1065

    1065 单身狗 “单身狗”是中文对于单身人士的一种爱称.本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱. 输入格式: 输入第一行给出一个正整数 N(≤ 50 000),是已知夫妻/伴侣 ...

  8. python基础学习笔记——time模块

    time模块 time翻译过来就是时间,有我们其实在之前编程的时候有用到过. #常用方法 1.time.sleep(secs) (线程)推迟指定的时间运行.单位为秒. 2.time.time() 获取 ...

  9. FFT-hdu题目练习

    网上FFT的讲解和板子有很多,所以直接放题目 hdu1402 http://acm.hdu.edu.cn/showproblem.php?pid=1402 /* problem:大整数乘法 solut ...

  10. x86实模式到保护模式 李忠 王晓波

    x86实模式到保护模式  李忠 王晓波 第3到4章 各个进制间的转换省略 实验环境 编译器  nasm 虚拟机 virtual box 小程序  hexview   观察编译后的机器代码 fixvhd ...