逆向攻防世界CTF系列45-Windows_Reverse1
逆向攻防世界CTF系列45-Windows_Reverse132位,upx壳 跟进sub_401000 发现传了a1也就是输入v5,这里的v1是ecx,看汇编代码发现,它也是被传递的参数也就是main里的v4 v4 = a1 - v1;求了一个地址差,v1一开始是0 *v1 = byte_402FF8[(char)v1[v4]]; 有点没看懂 v1一开始是0,v4是地址差 *v1 = byte_402FF8[(char)v1[v4]]; 这里V1作为地址和v4作为地址差值执行的是v1+v4的操作,因为数组a[b]本质就是在数组头地址a加上偏移量b来遍历数组的, 也就是一开始是v4=a1-v1,v1为0,其实就是我们输入的第一个字符的位置,后面v1[v4]倒不如理解成v4[v1],v1会加加,就会遍历 byte_402FF8[xx]就是以这个地址为便宜去取字符 数组地址偏移从0x00402FF8~0x00403078 看上面的标识char...
逆向攻防世界CTF系列44-happyctf
逆向攻防世界CTF系列44-happyctf 是个C++风格的代码 不用关心这些乱七八糟的,其实都是对象,仔细看一下跟进第一个operator(add) 异或 直接猜出来了… 1234key = 'rxusoCqxw{yqK`{KZqag{r`i'for i in range(len(key)): print(chr(ord(key[i]) ^ 0x14),end='') flag{Welcome_to_Neusoft}
逆向攻防世界CTF系列43-gametime
逆向攻防世界CTF系列43-gametime做了好久,收获很多,参考了很多题解,这是比较适合初学者的攻防世界 gametime 使用IDA pro+OD动调 - C4emc1oudy -...
逆向攻防世界CTF系列42-reverse_re3
逆向攻防世界CTF系列42-reverse_re3参考:CTF-reverse-reverse_re3(全网最详细wp,超4000字有效解析)_ctfreverse题目-CSDN博客 64位无壳 12345678910_int64 __fastcall main(__int64 a1, char **a2, char **a3){ int v4; // [rsp+4h] [rbp-Ch] sub_11B4(a1, a2, a3); do v4 = sub_940(); while ( v4 != 1 && v4 != -1 ); return 0LL;} 跟进sub_11B4 __readfsqword(0x28u)经常会出现,反调试,先记住 下面是dowhile v4必须要为1或者-1最后 跟进sub_940 1234567891011121314151617181920212223242526272829303132333435363738394041__int64 sub_940(){ int v0;...
逆向攻防世界CTF系列41-EASYHOOK
逆向攻防世界CTF系列41-EASYHOOK看题目是一个Hook类型的,第一次接触,虽然学过相关理论,可以看我的文章 Hook入门(逆向)-CSDN博客 题解参考:https://www.cnblogs.com/c10udlnk/p/14214057.html和[攻防世界逆向高手题之EASYHOOK-CSDN博客](https://blog.csdn.net/xiao__1bai/article/details/119920369) 123456789101112131415161718192021222324252627int __cdecl main(int argc, const char **argv, const char **envp){ HANDLE FileA; // eax DWORD NumberOfBytesWritten; // [esp+4h] [ebp-24h] BYREF char Buffer[32]; // [esp+8h] [ebp-20h] BYREF sub_401370(aPleaseInputFla); ...
逆向攻防世界CTF系列40-ReverseMe-120
逆向攻防世界CTF系列40-ReverseMe-120直接定位到关键函数 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849int __cdecl main(int argc, const char **argv, const char **envp){ unsigned int v3; // edx unsigned int v4; // ecx __m128i si128; // xmm1 unsigned int v6; // esi const __m128i *v7; // eax __m128i v8; // xmm0 int v9; // eax char v11[100]; // [esp+0h] [ebp-CCh] BYREF char v12[100]; // [esp+64h] [ebp-68h] BYREF unsigned int v13; // [esp+C8h] [ebp-4h] ...
逆向攻防世界CTF系列39-debug
逆向攻防世界CTF系列39-debug查了资料说.NET要用其它调试器,下载了ILSPY和dnSPY ILSPY比较适合静态分析代码最好了,函数名虽然可能乱码不显示,但是单击函数名还是能跟踪的,而dnSPY在动态调试上效果好,它的函数名不仅乱码不显示,点击后还无法跟踪。(最好两个都下载,一个动态分析,一个静态分析) dnspy找半天,在这 这里下一个断点直接读到了flag 因为这里flag直接被返回了,多试几次就找到了 当然也可以静态分析 可以猜到这段是在做处理 ILSPY打开 123456789import hashlibkey1 = [3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]key2 = "CreateByTenshine"flag = ""for a in key2: for i in key1: a = chr(i^ord(a)) flag +=...
逆向攻防世界CTF系列38-xxxorrr
逆向攻防世界CTF系列38-xxxorrr64位无壳,很自然的找到main和一个比较函数 以为逻辑很简单了 12345678910111213141516enc = [ 0x56, 0x4E, 0x57, 0x58, 0x51, 0x51, 0x09, 0x46, 0x17, 0x46, 0x54, 0x5A, 0x59, 0x59, 0x1F, 0x48, 0x32, 0x5B, 0x6B, 0x7C, 0x75, 0x6E, 0x7E, 0x6E, 0x2F, 0x77, 0x4F, 0x7A, 0x71, 0x43, 0x2B, 0x26, 0x89, 0xFE]key = [ 0x71, 0x61, 0x73, 0x78, 0x63, 0x79, 0x74, 0x67, 0x73, 0x61, 0x73, 0x78, 0x63, 0x76, 0x72, 0x65, 0x66, 0x67, 0x68, 0x6E, 0x72, 0x66, 0x67, 0x68, 0x6E, 0x6A, 0x65, 0x64, 0x66, 0x67, 0x62,...
逆向攻防世界CTF系列37-crackme
逆向攻防世界CTF系列37-crackme参考https://blog.csdn.net/xiao__1bai/article/details/120230397 nspack的壳,查了一下好像是北斗的一个壳 没找到什么脱壳软件,只能手动脱壳了 手动脱壳的最终要的是ESP定律 ESP定律的原理就是“堆栈平衡”原理 涉及的汇编知识: call命令: 向堆栈中压入下一行程序的地址; JMP 到 call 的子程序地址处。 例如: 00401029 E8 DA240A00 call 004A3508 0040102E 5A pop edx 在执行了00401029以后,程序会将0040102E(下一条指令地址)压入堆栈,然后 JMP 到 004A3508 地址处 RETN命令: 将当前的 ESP 中指向的地址出栈;JMP 到这个地址。 堆栈平衡可以简单的理解为在一个函数的ret之前,中间入栈和出栈的次数要相等(也就是一定要保证在 RETN 这条指令之前,ESP指向的是我们压入栈中的地址) 软件加壳就是隐藏了OEP(或者用了假的OEP),...
逆向攻防世界CTF系列36-re4-unvm-me
逆向攻防世界CTF系列36-re4-unvm-mepyc文件反编译 发现自己用uncompyle6的结果不太对,转而用在线网站反编译: https://tool.lu/pyc/ 1234567891011121314151617181920212223242526272829303132333435#!/usr/bin/env python# visit https://tool.lu/pyc/ for more information# Version: Python 2.7import md5md5s = [ 0x831DAA3C843BA8B087C895F0ED305CE7L, 0x6722F7A07246C6AF20662B855846C2C8L, 0x5F04850FEC81A27AB5FC98BEFA4EB40CL, 0xECF8DCAC7503E63A6A3667C5FB94F610L, 0xC0FD15AE2C3931BC1E140523AE934722L, ...