no-strings-attached
作者: 博客园精华区 更新时间:2020-06-01 20:45:00 原文链接
0x01
拿到程序,直接IDA放进去看一下,结果如图:
我们发现main中有四个函数,我们一个一个进去,经过分析之后,发现authenticate();是关键函数,所以,接下来我们进去看看。
void authenticate() { wchar_t ws[8192]; // [esp+1Ch] [ebp-800Ch] wchar_t *s2; // [esp+801Ch] [ebp-Ch] s2 = (wchar_t *)decrypt(&s, &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(&s, &dword_8048A90);
所以我们在decrypt结束处下断电,然后观察寄存器的值,这里我们使用gdb,因为这个程序是linux下运行的,所以我们使用gdb
0x02
1.打开gdb
2.向gdb中加载文件
3.在decrypt()结束处下断(通过IDA我们可以知道结束处的地址为0x08048707)
4.r 运行
5.查看寄存器
6.将寄存器eax中的值直接以字符串形式输出,拿到flag