攻防世界_Re_新手区_no-strings-attached
主函数:
int __cdecl main(int argc, const char **argv, const char **envp) { setlocale(6, &locale); banner(); prompt_authentication(); authenticate(); return 0; }
只有第四个函数有点东西:
void authenticate() { wchar_t ws[8192]; // [esp+1Ch] [ebp-800Ch] BYREF wchar_t *s2; // [esp+801Ch] [ebp-Ch] s2 = (wchar_t *)decrypt((wchar_t *)&s, (wchar_t *)&dword_8048A90); if ( fgetws(ws, 0x2000, stdin) ) { ws[wcslen(ws) - 1] = 0; if ( !wcscmp(ws, s2) ) wprintf(&unk_8048B44); else wprintf(&unk_8048BA4); } free(s2); }
有一个decrypt函数,应该是对字符串加密的
使用GDB动调:
先在decrypt函数断点:
但是这里运行的时候出现了点小问题:
提示权限不够
这里只需要输入:
chmod 777 文件名
就可以继续运行:
然后输入n单步运行:
然后查看eax寄存器的值
x/5sw $eax
s 表示字符串形式
5 表示5行
flag:
9447{you_are_an_international_mystery}