BUUCTF re(一):新年快乐、findit、简单注册器

新年快乐

这玩意再一次告诉我要查壳

查壳

然后下upx3.91解压,再丢IDA就好:

./upx -d 新年快乐.exe

findit

明明很简单,但写脚本写了半天,气气

丢进jadx反编译,

反编译

疑似flag的东西,且没有其他有意义的函数,猜测做了简单的移位,脚本:

str1 =['p', 'v', 'k', 'q', '{', 'm', '1', '6', '4', '6', '7', '5', '2', '6', '2', '0', '3', '3', 'l', '4', 'm', '4', '9', 'l', 'n', 'p', '7', 'p', '9', 'm', 'n', 'k', '2', '8', 'k', '7', '5', '}']
alp = "abcdefghijklmnopqrstuvwxyz"
t = 0
flag = ''
cha = ord(str1[0])-ord('f')
for s in str1:
 if(ord(s)>=97 and ord(s)<=122):
 t = (ord(s)-97-cha)%26+97
 flag = flag + chr(t)

 else:
 flag = flag + s
print(flag)

简单注册器

main

注意一下,前面那个if里的条件其实没有用,因为我们最后要的是x而不是我们输入的xx

和上一题相比,需要多看一眼程序,剩下的就是写脚本

x = 'dd2940c04462b4dd7c450528835cca15'
f = ['']*len(x)
a = ''
for i in range(len(x)):
 f[i] = x[i]
f[2] = chr(ord(f[2]) + ord(f[3]) - 50)
f[4] = chr(ord(f[2]) + ord(f[5]) - 48)
f[30] =chr(ord(f[31]) + ord(f[9]) - 48)
f[14] =chr(ord(f[27]) + ord(f[28]) - 97)
​
for i in range(16):
 a = f[31 - i]
 f[31 - i] = f[i]
 f[i] = a
​
for i in range(len(f)):
 print(f[i],end='')

写的时候碰上了一点点错误,错误部分你们看看,我看了半天:没错啊。找出错后想打人

f[2] = chr(ord(x[2]) + ord(x[3]) - 50)
f[4] = chr(ord(x[2]) + ord(x[5]) - 48)
f[30] =chr(ord(x[31]) + ord(x[9]) - 48)
f[14] =chr(ord(x[27]) + ord(x[28]) - 97)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。