BUUCTF

easyre

题如其名,非常简单的一道入门题
拖入exe,无壳,拖入64位IDA,F5反汇编
在这里插入图片描述
直接看出flag为flag{this_Is_a_EaSyRe}

reverse1

拖入exe,无壳拖入64位IDA,F5反汇编
一路跟进,来到这个界面
在这里插入图片描述
一长串还有些乱,于是shift+F12直接查找字符串
在这里插入图片描述
看见关键字符串直接双击跟进调用该处的函数
在这里插入图片描述
找到关键函数
在这里插入图片描述
跟进Str2
在这里插入图片描述
根据if条件句,将o换成0,故得到flag为flag{hell0_w0rld}

reverse2

拖入Exe,无壳拖入64位IDA,F5反汇编
在这里插入图片描述
当输入字符串s2和flag一样时才会得到正确的flag
跟进flag
在这里插入图片描述
根据if条件,将‘i’和‘r’都换成1
故得到flag为flag{hack1ng_fo1_fun}

内涵的软件

拖入exe,无壳拖入32位IDA,F5反汇编
在这里插入图片描述
点进去分析半天,最后发现就是那一长串字符,换个包将DBAPP换成flag即可
最终flag为flag{49d3c93df25caad81232130f3d2ebfad}

xor

拖入exe,无壳拖入64位IDA,F5反汇编
在这里插入图片描述
global和flag进行了比较
跟进global,并提取其字符串
在这里插入图片描述
写脚本

s=[0x66, 0x0A, 0x6B, 0x0C, 0x77, 0x26, 0x4F, 0x2E, 0x40, 0x11, 
  0x78, 0x0D, 0x5A, 0x3B, 0x55, 0x11, 0x70, 0x19, 0x46, 0x1F, 
  0x76, 0x22, 0x4D, 0x23, 0x44, 0x0E, 0x67, 0x06, 0x68, 0x0F, 
  0x47, 0x32, 0x4F, 0x00]
#print(list1) # 会自动变成十进制
flag=chr(s[0])  # f   第一个‘f’没有被处理,但是也是flag的一部分。
i=1
while True:
  if i<len(s):
    flag += chr(s[i]^s[i-1])  #从输入的第二位开始,将其与前一位异或
    i+=1
  else:
    break
print(flag)

运行得到flag为flag{QianQiuWanDai_YiTongJiangHu}