BUUCTF Re部分wp(一)
easyre
拖进ida,得到flag
helloworld
将文件拖入apk改之理,
得到flag
xor
拖进ida,
就是简单异或,写脚本
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]
x='f'
for i in range(1,len(glo)):
x+=chr(glo[i]^glo[i-1])
print(x)
得到flag
新春快乐
exe拖入ida,发现有壳,查壳
upx,用upx -d脱壳,再拖入ida
得到flag
reserve1
exe,拖入ida,有大量的函数,于是先看字符串
看到可疑字符串,点进去
找到了调用的函数,再点进去
找到关键函数,分析,将字符串str2中所有的o替换为0即为flag
Mysterious
这题出在MISC里了,先找字符串
跟随
找到关键函数
这里有个atoi()将字符串换为整形之后减一了,所以输入122xyz
得到flag
(这flag不是直接给了吗,感觉自己以前好傻。。。)
不一样的flag
许久未见的迷宫题,进main
十分贴心的已经将上下左右分好了,然后看_data_start___这就是迷宫
由*开始,由#结束,每五个一换行
*1111
01000
01010
00010
1111#
SimpleRev
拖进ida,可以找到关键函数decry,
看key1,3,
可以得到 text=killshadow,key=ADSFKNDCLS
然后程序对key进行了一番花里胡哨但其实就是把key变成小写的操作,于是得key=adsfkndcls,而我们要求的是v1,写脚本
#include<stdio.h>
int main(void)
{
char text[10]="killshadow";
char key[10]="adsfkndcls";
int v3=0;
int v5=10;
char flag[10];
for(int i=0;i<10;i++)
{
for(char j='A';j<='Z';j++){
char temp;
temp=(j-39-key[i]+97)%26+97;
if(temp==text[i])
flag[i]=j;
}
}
printf("%s",flag);
return 0;
}
得到flag
内涵的软件
签到题,拖进ida,得到flag
reverse2
先看string
找到关键函数
把flag中i,r替换为1,得到 flag
reverse3
拖入ida,找到主函数
看str2
将输入转换后与str2比较,看sub_4110BE
是base64加密,知道这一点就很容易了
import base64
str2='e3nifIH9b_C@n@dH'
flag=''
for i in range(0,len(str2)):
flag+=chr(ord(str2[i])-i)
print(base64.b64decode(flag))
得到flag
8086
拖进ida
f="]U[du~|t@{z@wj.}.~q@gjz{z@wzqW~/b"
flag=""
for i in range(len(f)):
flag+=chr(ord(f[i])^0x1f)
print(flag)
得到flag
pyre
code = [31, 18, 29, 40, 48, 52, 1, 6, 20, 52, 44, 27, 85, 63, 111, 54, 42, 58, 1, 68, 59, 37, 19]
code.reverse()
for i in range(len(code)-1):
code[i+1]=code[i]^code[i+1]
code.reverse()
for i in range(len(code)):
code[i]=(code[i]-i+128)%128
for i in range(len(code)):
print(chr(code[i]),end="")
[WUSTCTF2020]level2
32elf,脱upx得flag