re_1___game
直接ida,找到返回flag的函数,跟进,如图
根据反编译代码写脚本
得flag
re_2__open-source
源码如下
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]) {
if (argc != 4) {
printf("what?\n");
exit(1);
}
unsigned int first = atoi(argv[1]);
if (first != 0xcafe) {
printf("you are wrong, sorry.\n");
exit(2);
}
unsigned int second = atoi(argv[2]);
if (second % 5 == 3 || second % 17 != 8) {
printf("ha, you won't get it!\n");
exit(3);
}
if (strcmp("h4cky0u", argv[3])) {
printf("so close, dude!\n");
exit(4);
}
printf("Brr wrrr grr\n");
unsigned int hash = first * 31337 + (second % 17) * 11 + strlen(argv[3]) - 1615810207;
printf("Get your key: ");
printf("%x\n", hash);
return 0;
}
得
first=0xcafe
由下式计算second
second=1
while 1:
if second % 5 != 3 :
if second % 17 == 8:
break
second+=1
后计算
hash = first * 31337 + (second % 17) * 11 + 7 - 1615810207
以16进制输出
print(hex(hash))
得
0xc0ffee
将c0ffee提交即可
re_3__simple-unpack
将下载的文件放入exeinfope
发现有壳
将其传入kali进行脱壳
再将文件传回Windows放入ida
在mian中得到flag
re_4__logmein
拖入exeinfope查看后直接用ida64打开
发现了一个疑似flag的运算
直接写脚本
key_1=":\"AL_RT^L*.?+6/46"
key_2="harambe"
key_3=""
for i in range(len(key_1)):
key_3+=chr(ord(key_2[i%7]) ^ ord(key_1[i]))
print(key3)
得flag
RC3-2016-XORISGUD
攻防世界srm-50
我们先查个壳
发现32位,扔ida看看
我们可以直接看到flag就是v11
注意下顺序,将v11输出就得到flag:CZ9dmq4c8g9G7bAX
攻防世界Mysterious
先将得到的文件扔进exeinfo看看
发现是32位,拉进ida瞅瞅
啊哈,我们看到了flag,
其中有一段未知
strcat(Text, Source);
我们追踪一下Source
_itoa(Value, Source, 10);
找到Value
Value = v4 + 1;
我们通过判断条件可知v4=122,即Value=123.
if ( v4 == 122 && String[3] == 120 && String[5] == 122 && String[4] == 121 )
得flag{123_Buff3r_0v3rf|0w}