CTF re
路途之后是路途
这个作者很懒,什么都没留下…
展开
-
攻防世界 zorropub
由于源文件是elf格式,也就是Linux下的文件,写完代码编译的时候需要在Linux下编译,因为windows下的rand()函数得结果与linux不同。而16<v6<0xFFFF,无论如何seed的取值都在0-0xFFFF之间。也就是说在前面的v5输入1,v6输入59306就可以得到flag。库在3.0以后的版本中废除了旧的MD5函数,需要使用新的写法。Seed前面的赋值都可以不用管,因为seed^=v6。然后输入v6,将seed与v6异或。所以seed^=v6等于v6的值。1.查壳,无壳,64位。原创 2023-07-15 11:13:24 · 157 阅读 · 1 评论 -
攻防世界 babyXor
大概分析一下有三个字符串v8,Src,v5,而最后一个函数就是三字符串拼一块。在这里可以看出来eax,edx,ecx存了三字符串的地址,下断。Jmp之后分析代码,利用dump工具dump出来。未知壳,叫我去看看DIE,DIE也看不出来。有个pushad和popad。很显然jmp之后就是源代码了。不出意外这个就是flag了。那么答案已经呼之欲出了。原创 2023-07-15 11:11:18 · 116 阅读 · 1 评论 -
攻防世界 babymips
这里需要注意一点,为什么要用0xff,在原来的变量定义中这是个char型的字符串,也就是说是8位的长度,而python里默认是64位长度上限,在右移的过程中容易超出8位的长度且取入了8位以上的值,0xff可以取得前8位的长度的值。这里很显然只进行了一次变换,而这个左移跟右移结合按位或的可以将左移跟右移调换写出逆向脚本。这里i的地址在sp+18h处,而v5的地址在sp+1ch处,就是说v5的地址加4就是i。第二个框先进行了一次判断,对前5个值校检,再进入sub_4007F0中。逆向萌新打题,攻防世界。原创 2023-07-15 11:09:09 · 192 阅读 · 1 评论 -
攻防世界 re 新手模式 Signln
_gmpz_init_set_str的作用就是把第二个参数指定的字符串按第三个参数设定的进制解读成数值并放入第一个参数所指定的内存中;__gmpz_powm的作用是计算第二个参数的第三个参数的次方然后对第四个参数取模,放入第一个参数中。这里最主要的就是__gmpz_powm,类似于RSA加密,需要利用RSA解密的方法求解flag。回到主函数中出现多个__gmpz_init_set_str函数。本次re主要考察了关于RSA加密的识别。__gmpz_cmp就是个比较函数。其中e就是v5,C是v7,n是v4。原创 2023-05-19 11:34:28 · 176 阅读 · 1 评论