做题就像坐牢一样,继续继续,汪汪队蹲大牢
————————————————————————————————————————————
第一题:easyre(题目如下)
一段可执行文件,拖到IDA里面打开,直接可以看到flag。
————————————————————————————————————————————
第二题:reverse1(题目如下)
用IDA64位打开。
先shift+F12打开字符串窗口,搜索到有关flag的提示!
单击上述的this is the right flag,会跳转到如下界面。
然后按住ctrl+x,会出现下面这个界面,点击OK。
发现已经跳转到框图了。
快捷键F5,进入到代码页面。
__int64 sub_1400118C0()
{
char *v0; // rdi
__int64 i; // rcx
size_t v2; // rax
size_t v3; // rax
char v5[36]; // [rsp+0h] [rbp-20h] BYREF
int j; // [rsp+24h] [rbp+4h]
char Str1[224]; // [rsp+48h] [rbp+28h] BYREF
unsigned __int64 v8; // [rsp+128h] [rbp+108h]
v0 = v5;
for ( i = 82i64; i; --i )
{
*(_DWORD *)v0 = -858993460;
v0 += 4;
}
for ( j = 0; ; ++j )
{
v8 = j;
v2 = j_strlen(Str2);
if ( v8 > v2 )
break;
if ( Str2[j] == 111 )
Str2[j] = 48;
}
sub_1400111D1("input the flag:");
sub_14001128F("%20s", Str1);
v3 = j_strlen(Str2);
if ( !strncmp(Str1, Str2, v3) )
sub_1400111D1("this is the right flag!\n");
else
sub_1400111D1("wrong flag\n");
sub_14001113B(v5, &unk_140019D00);
return 0i64;
}
发现有一个strncmp函数,是将三个进行对比,我们分别看一下。
这里丢出strncmp函数的规则。
我们输入的str1要和str2比较如果相同就会得到flag。
我们先看到str1,双击,发现str1的内容是需要用户输入的。
我们看到str2,发现str2是一个{hello_world}
看到程序上面,str2还是做出了一些更改的。
大概意思是将ascll码为111的修改为48的,此时的str2就为{hell0_w0rld}了。
尝试提交一下,发现提交成功!
————————————————————————————————————————————