这题与之前所作的题目不同,不同点在于这题不存在ssh连接至其他的服务器,需要自己在脚本中体现。
首先,下载文件,放到IDA里跑一跑(这里说明,要注意下载下来的文件是32位还是64位的文件,这关系到能不能正确打开并得到反汇编代码的问题),得到main函数的伪代码:
int __cdecl main(int argc, const char **argv, const char **envp)
{
int v4; // [sp+18h] [bp-28h]@1
__int16 v5; // [sp+1Eh] [bp-22h]@1
unsigned int v6; // [sp+3Ch] [bp-4h]@1
memset(&v5, 0, 0x1Eu);
setvbuf(stdout, 0, 2, 0);
setvbuf(stdin, 0, 1, 0);
printf("Authenticate : ");
_isoc99_scanf("%30s", &v5);
memset(&input, 0, 0xCu);
v4 = 0;
v6 = Base64Decode((int)&v5, &v4);
if ( v6 > 0xC )
{
puts("Wrong Length");
}
else
{
memcpy(&input, v4, v6);
if ( auth(v6) == 1 )
correct();
}
return 0;
}
理解这串代码并不难,结果发现这里还引用了auth( )函数,直接双击,得到auth( )函数的代码: