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#
走一遍的flag

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

原文地址:https://www.cnblogs.com/harmonica11/p/11365728.html