BUU_RE

cBUU RE

simplerev

核心函数

image-20210529003720924

脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main(){
char a[10];
char b[10];
int temp;
char key[20]="adsfkndcls";
char key3[20]="killshadow";
for(int i=0;i<10;i++){
for(int j=0;j<128;j++){
if(((j - 39 - key[i] + 'a') % 26 + 97)==key3[i]){
if(j>='A'&&j<='Z'){
a[i]=j;
break;
}
}
}
}
printf("%s",a);
return 0;
}
//KLDQCUDFZO

这里需要注意的是这个题目,他啊,是有问题的。

这里看到我只对大写做了判别,但其实大小写混写都是可以的。所以我怀疑这道题的答案应该是100(10的2次方)种,所以我觉得这题有点不讲武德。

刮开有奖

属实没看懂,mad

image-20210703153514436

运行程序,然后我直接蒙了,拿鼠标挂了好久,我怀疑这是诈骗

image-20210703153548753

然后还是ida打开,(没加壳

1
2
3
4
5
int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
DialogBoxParamA(hInstance, (LPCSTR)0x67, 0, DialogFunc, 0);
return 0;
}

很显然,main函数中这个应该是对话框的函数

打开DialogFunc看看

image-20210703153702525

这里是主函数没有错了

逐一分析

首先一开头给input清空了位置,并且读入了字符,不难发现应该是八位

然后是一个

一个sort,

加上两个base64(不换表

结果就出来了

简单的注册器

image-20210705170743119

payload:4b4zzzzzzzzzzzzzzzzzzzzzzzzzzzza

或者直接上脚本

1
2
3
4
5
6
flag=list(b"dd2940c04462b4dd7c450528835cca15")
flag[2]=flag[2]+flag[3]-50
flag[4]=flag[2]+flag[5]-48
flag[30]=flag[31]+flag[9]-48
flag[14]=flag[27]+flag[28]-97
print("flag{"+bytes(flag).decode()[::-1]+"}")

得到flag

flag{59acc538825054c7de4b26440c0999dd}

pyre

这题是真做的血压高

(自己的py水平有待提高image-20210706134426642

这个是pyc逆向后的源码,

显而易见,input应该就是flag了,然后code已经给出,先进行逐位相异或,然后对得到的code进行变换。

EXP:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
code = ['\x1f', '\x12', '\x1d', '(', '0', '4', '\x01', '\x06', '\x14', '4', ',', '\x1b', 'U', '?', 'o', '6', '*', ':', '\x01', 'D', ';', '%', '\x13']
for i in range(len(code)):
code[i]=ord(code[i])
print(code)
for j in range(len(code)-2,-1,-1):
code[j]=code[j]^code[j+1]
flag=""
for w in range(len(code)):
code[w]=code[w]-w
if code[w]<0:
code[w]+=128
flag+=chr(code[w])
print(flag)


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!