easyre
下载附件,解压,用ida64打开

按tab生成伪代码

分析代码,即输入两个相同的整型即可输出flag,或者说,printf函数中的字符串即为flag
flag{this_Is_a_EaSyRe}
reverse1
下载附件,解压,用ida64打开

按shift+F12,发现有flag相关的字符串

双击wrong flag,再右键交叉引用字段,进入该函数中


按tab查看反编译伪代码

分析代码得,程序要求输入str1,与进行处理后的str2进行对比,处理方式为将字符o替换为字符0,处理后得到的str2即为flag,双击Str2查看

得到{hello_world},将o替换为0即为flag
flag{hell0_w0rld}
reverse2
下载附件,解压,用ida64打开

按tab查看反编译伪代码

分析代码得,处理为将字符i和字符r替换为字符1,双击flag字段查看处理前flag

得到{hacking_for_fun},将字符i和字符r替换为字符1即为flag
flag{hack1ng_fo1_fun}
内涵的软件
下载附件,用ida64打开

查看_main_0函数,得到以下字符串,加上flag{}即可

flag{49d3c93df25caad81232130f3d2ebfad}
新年快乐
下载附件,解压,放入Exeinfo PE里面查看是否有壳

发现有upx壳,使用upx.exe进行脱壳

再次查看是否有壳

没有壳,放入ida32中反编译

分析代码得到flag
flag{HappyNewYear!}
xor
考点:按位异或
下载附件,解压,发现无壳,放入ida64中,按tab反编译


除第一位,其他位一次与前一位异或,结果与global值对比,查看global值

编写运行exp,得到flag
glo=[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]
flag =''
for i in range(len(glo)-1, 0, -1):
glo[i]^=glo[i-1]
for i in glo:
flag+=chr(i)
print(flag)
flag{QianQiuWanDai_YiTongJiangHu}
helloword
考点:apk包反编译
下载附件,使用jdax打开

搜索flag{,得到flag

flag{7631a988259a00816deda84afb29430a}
reverse3
考点:自定义Base64
下载附件解压,32位无壳,放入ida32中,查看字符串

发现相关字符串,跳转至处理函数

进入字符串处理函数

发现Base64字符串,为使用自定义Base64处理,返回查看Str2

按位减去j
str='e3nifIH9b_C@n@dH'
str2=''
char=''
for i in range(0,len(str)):
char=chr(ord(str[i])-i)
str2+=char
print(str2)
输出字符串e2lfbDB2ZV95b3V9,放入Base64转换

套上flag,得到flag
flag{i_l0ve_you}
不一样的flag
下载附件,解压,用ida32打开,按tab反编译

发现特殊字符串,分析代码,类似于用这个特殊字符串进行走迷宫,将字符串以5字符一组分开得到
*1111
01000
01010
00010
1111#
即从字符*处走到字符#处,不能碰到字符1,得到flag
flag{222441144222}
SimpleRev
考点:大小端存储
下载附件,解压,放入ida64,按tab反编译

分析代码,得到text和key字符串,注意字符串的后半部分都是大端存储的,所以取倒序,编写exp,得到flag
text="killshadow"
key="adsfkndcls"
flag=''
for i in range(10):
for j in range(65,123):
char=(j-39-ord(key[i])+97)%26+97
if char==ord(text[i]):
flag+=chr(j)
break
print('flag{'+flag+'}')
flag{KLDQCUDFZO}
(未完待续)