no-strings-attached
作者:互联网
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
标签:no,attached,寄存器,decrypt,gdb,ws,s2,wchar,strings 来源: https://www.cnblogs.com/Jleixin/p/13027367.html