UNCTF- 2019 EasyVm
UNCTF- 2019 EasyVm分析放入IDA中分析
先看两个参数
2080
20A0
然后进去关键函数
发现这里是许多的a1的偏移,然后这里有一个10A8可以跟进去,注意这里的存储类型,后面分析有用
可以看到这里调用了很多的函数,然后进去第一个函数看一下
这里能够看到是通过switch和case语句进行很多的不同的偏移,这里并不知道他运行的顺序,需要虚拟机远程调试
动调我的断点下在了这里
这里动态调试记得输入32位,防止最外面的if语句判断错误
然后进去看一下基本的数据存放
a1存放的东西:
看到这里,它的存储是4010A8,然后a1+8就是4010B0。然后看到下面
知道A0对应的是这里,再结合外面能推测出4010B0应该是地址
这里10B01118能与A0AF进行对应
从中知道(a1+24)调用的是20A0,(a1+32)调用的是我们所输入的东西,a2调用的是2080
也就是说a2+9是用来传输给switch进行判断的
然后通过不断的调试得出顺序是:A9,A3,A5,A6,A4,AB,A7,AE
接着找对应函数在干嘛
A9
这里并不知道a1+16和a1+ ...
HZNUCTF flower
HZNUCTF flower分析32位无壳 然后放入IDA中分析
根据题目,flower大胆擦测是个花指令的题目,然后往下翻就看到了db 0E8h,一般的汇编代码不会这么单独搞出来,还有就是一大堆的dd数据,那么本题考的就是花了
然后往下继续看
这里句话,但是F5居然找不到
这里我猜测是将这个程序分开了,那么我需要将他们分成两部分,一个主函数和另一个函数,这里去花就不给演示了,想要了解去花可以去看我的总结文章
去完花之后就是这样的
主函数:
另一个函数:
可以从上述两个函数中能知道,这就是一个魔改的RC4加密,改的地方在交换的那里。主函数中也给出了key和Data,那么我们直接写脚本
#include<iostream>#include<stdint.h>#include<string.h>using namespace std;int s[256];char t[256];int k[50];void swap(int* a, int* b){ uint8_t tmp; tmp = *a; *a = *b; *b = tmp ^ ...
NSSCTF-RoundX easy_z3
NSSCTF-RoundX easy_z3分析首先查壳,发现是UPX,但是直接手动去壳不行,发现是魔改的UPX,更改一下三个值再去脱壳就行了
然后放入IDA中分析
根据每个函数分析出了大致的解题过程,那么先用z3解出我们要的吧
from z3 import *a1 = [BitVec("num[%d]" % i, 32) for i in range(20)]s = Solver()s.add( 20 * a1[19] * 19 * a1[18] + 14 * a1[13] + 13 * a1[12] + 11 * a1[10] * 10 * a1[9] + 30 * a1[5] + 5 * a1[4] + a1[0]+ 2 * a1[1]- 3 * a1[2]- 4 * a1[3]- 7 * a1[6]+ 8 * a1[7]- 9 * a1[8]- 12 * a1[11]- 16 * a1[15] * 15 * a1[14]- 17 * a1[16]- 18 * a1[17] == 2582239)s.add( ...
2023 数字网络安全人才挑战赛 game
2023 数字网络安全人才挑战赛 game分析:首先查壳
32位无壳,然后放入IDA中分析
可以看到这个exe进行了许多的随机数的处理,本来想着这道题会不会是跟随机数有关,但是看到前面srand用的种子是随机的,也就是说,每次打开程序都会是得到新的不一样的东西。那么本题跟这些与随机数相关的东西无关,这些部分是游戏所需要的参数
然后接着往下看,通过动调明白了一些函数到底是在干什么,能知道 “Sleep(0x64u);” 以前的都是游戏的部分。
看到 “sub_403810(v30, “flag.png”, 0, 0, 0);” 猜测这道题的flag可能是需要动调出图片得到的,那么也就是说首先得需要if语句能够成立才可以运行到下面
首先想到的是可不可以通过前面的累加进行成立
但是动调发现,这根本到不了这个语句,所以行不通,那么只能改值了。我们知道这种未初始化的部分无法在静态编译中更改值,那么只能边动调边改了
这里将值修改成0x280(640)
然后一直f8来跑,接着会弹出一个Done
然后去文件夹中看看是否生成png图
NepnepxCATCTF ——The cat did it
NepnepxCATCTF ——The cat did it分析解压之后得到一个网站,然后进去发现是一个求概率的题,给了很多的条件和要求的东西
一开始没有头绪,一直往下面翻看到这个,点击一下就出现了猫猫的图案
发现“我”无论怎么运动都在猫猫里面,那么我离开猫猫的概率也就是0%,然后结合题目给的提示
flag:CatCTF{9f1ef07877f9d85a82bd500f408b4814}
总结感觉跟逆向没有半毛钱关系(´・ω・`)