逆向
Try_reverse_it
本题考查rc4加密
拖入exe发现有壳,且为32位
进行脱壳操作,下图表示脱壳完成
拖入ida
memset是一个初始化函数,作用是将某一块内存中的全部设置为指定的值
提取数据,shift+e
观察发现flag是32位,v19[0][1]就是Buffer,写出脚本
#include <stdio.h>
#include <stdint.h>
#include <string.h>
int main() {
FILE *v3; // eax
unsigned int v4; // kr00_4
int v5=0; // edi
int i; // ecx
int j; // esi
unsigned char v9; // dl
int v10; // esi
int v11; // edi
unsigned int k; // ebx
unsigned char v13; // cl
int v14; // eax
char v16; // [esp-30h] [ebp-640h]
char v17[256]; // [esp+Ch] [ebp-604h] BYREF
char Buffer[32] = {
108, 248, 144, 255, 139, 24, 229, 118, 181, 251,
80, 245, 44, 95, 243, 16, 203, 62, 234, 154,
200, 55, 45, 79, 204, 143, 33, 41, 23, 6, 202, 103
};
unsigned char v21[256];
unsigned char v20[16] =
{
108, 101, 116, 39, 115, 95, 114, 101, 118, 101,
114, 115, 95, 105, 116, 0
};
unsigned char *v6 = &v21[255];
memset(v17, 0, sizeof(v17));
memset(v21, 0, sizeof(v21));
v4 = strlen((const char *)v20);
for ( i = 0; i < 256; ++i )
{
*v6-- = i;
v17[i] = ((unsigned char*)v20)[i % v4];
}
for ( j = 0; j < 256; ++j )
{
v9 = v21[j];
v5 = (v9 + v17[j] + v5) % 256;
v21[j] = v21[v5];
v21[v5] = v9;
}
v10 = 0;
v11 = 0;
for ( k = 0; k < 0x20; ++k )
{
v10 = (v10 + 1) % 256;
v13 = v21[v10];
v11 = (v13 + v11) % 256;
v21[v10] = v21[v11];
v21[v11] = v13;
Buffer[k] ^= v21[(unsigned char)(v13 + v21[v10])];
}
puts(Buffer)
return 0;
}
flag{Y0u_5eem_1ike4pro_revers3r}
easy_xor
本题考查异或
先拖入exe发现是64位
这里是一个大小端的用法
大端(Big-Endian):高地址存放;低位小端(Little-Endian):高地址存放高放
所以str2应该反过来
写出脚本
flag{this_is_A_flag}
easy_upx
拖入exe,有壳,且为64位
脱壳
动态调试进入汇编窗口
得到flag{UPX_yyds!}
py?python!
观察代码,返回-1,data数据也反
写出脚本
#include <stdio.h>
#include <string.h>
int main()
{
char data[]={54,21,21,15,20,55,96,12,43,40,29,93,15,
43,71,40,3,95,41,38,
51,88,32,42,15,57,0,55,63,23,36,17,68,6,78,19} ;
char key []= "Python";
int i;
for (int i =0 ; i <=strlen(data) ; i++)
{
data[i]^=key[i % strlen(key)];
}
printf("%s\n", data);
return 0;
}
flag{Y0u_@r3_R3@l1y_G0OD_@t_Pyth0n!}
Ezmaze
迷宫问题,拖入ida观察发现是5*6的矩阵,从@开始0可走1不可走#结束
wasd分别代表键盘上的,w向上d向右a向左s向下
中文字符串的显示,在ida中可能无法正常显示 需要手动设置编码步骤如下:
1.options>general>strings
2.双击UTF-8,鼠标右键insert
3.在弹出的框中输入gbk,保存确认
4.选中需要修复的字符串,按ALT+A
5.选择C-style,中文字符成功显示
flag{dssdssa}
pwn
testnc
ls 列出文件和目录
ls -l 列出文件的详细信。
cat flag 显示文件flag的内容
打开实例进入虚拟机,就是一道简单的nc
flag{0a62b9ed-7dda-4045-9910-619ecc71ffd9}