攻防世界
reverse

maze

拖入exe
在这里插入图片描述

发现无壳并拖入64位IDA
F5反汇编
‘R’键将数字转换成字符串
在这里插入图片描述
可以知道控制方向键的分别为“O”,“o”,“.”,“0”
判断分别代表什么方向:
在这里插入图片描述
左减右加,上减下加
O左移 o右移 .上移 0下移
判断迷宫的x轴和y轴
在这里插入图片描述
所以迷宫的起点就是(0,0)

sub_400690函数中是a2+a3*8,即a3表示行,a2表示列
a3 通过edx传递
a2 通过esi传递
行×8?再去看这个字符串,发现是64位,正好就是8×8
双击asc_601060查看字符串
用记事本整理得迷宫图形

  ******
*   *  *
*** * **
**  * **
*  *#  *
** *** *
**     *
********

*是边界,空格是通路,#号是终点。
O是左移,o是右移,0是下移,.是上移
得到flag为nctf{o0oo00O000oooo..OO}

Shuffle

拖进exe,无壳,拖入32位IDA
F5反汇编
在这里插入图片描述

没想到直接看到flag,SECCON{Welcome to the SECCON 2014 CTF!},提交竟然是对的

dmd-50

拖入EXE,无壳,拖入64位IDA,F5反汇编
R快捷键将ASCII码转成字符
在这里插入图片描述
得到字符串870438d5b6e29db0898bc4f0225935c0
根据题目名称dmd-50猜测这是MD5密文,故将字符串解密得到grape
然而这并不是flag
在这里插入图片描述
发现重点md5(v40,v39)
意思是md5加密一次
将刚得到的grape再次md5加密
得到flag为b781cbb29054db12f88f08c6e161c199

lgniteMe

拖入exe,无壳,拖入32位IDA,F5反汇编
在这里插入图片描述
发现”Congratulations!”,应该是输入正确flag后的输出,故双击跟进sub_4011c0
在这里插入图片描述
存在两个函数异或,进入函数byte_4420B0
选中后按shift+e提取字符,选择demical十进制的数表示
在这里插入图片描述
编写脚本:

yihuo_qian =(   13,  19,  23,  17,   2,   1,  32,  29,  12,   2,
   25,  47,  23,  43,  36,  31,  30,  22,   9,  15,
   21,  39,  19,  38,  10,  47,  30,  26,  45,  12,
   34)
flag = ''
yihuo_result='GONDPHyGjPEKruv{{pj]X@rF'
for i in range(len(yihuo_result)):
    flag+=chr(((ord(yihuo_result[i])^yihuo_qian[i])-72)^85)
print(flag)

得到flag为EIS{WADX_TDGK_AIHC_IHKN_PJLM}(不过不知道提交为什么就是不正确)
还发现一种大佬的一种解法
shift+F2在IDA中嵌入脚本打印
脚本为:

addr=0x4420B0
list=[]
for i in range(32):
        list.append(Byte(addr+i))
print(list)

逆向逻辑脚本为:

key1="GONDPHyGjPEKruv{{pj]X@rF"
list1=[13, 19, 23, 17, 2, 1, 32, 29, 12, 2, 25, 47, 23, 43, 36, 31, 30, 22, 9, 15, 21, 39, 19, 38, 10, 47, 30, 26, 45, 12, 34, 4]
flag=[]
v3=0
for i in range(len(key1)):
   flag.append(((ord(key1[i])^list1[i])-72)^85)
   if flag[i] >= 65 and flag[i] <= 90:
      flag[i]+=32
   elif flag[i] >= 97 and flag[i] <=122:
      flag[i]-=32
print(''.join([chr(i) for i in flag]))
print(len(''.join([chr(i) for i in flag])))

re-for-50-plz-50

拖入EXE,无壳,拖入32位IDA。F5查看伪代码
在这里插入图片描述
代码非常简单,很好理解
进入函数meow,得到字符串
在这里插入图片描述
编写脚本:

a = "cbtcqLUBChERV[[Nh@_X^D]X_YPV[CJ"
f = ''
for i in range(len(a)):
    f += chr(ord(a[i])^55)
print(f)

运行得到flag为TUCTF{but_really_whoisjohngalt}