elfpass文件破解
把elfpass拷贝进seed虚拟机,设成root所有suid程序,用普通用户去攻击获得root权限。
可以先静态分析,搞不定再用gdb动态调试。
把elfpass用IDA打开,启用F5反编译:
获得源代码:
int __cdecl main(int argc, const char **argv, const char **envp)
{
int result; // eax@4
int v4; // edx@4
char s1; // [sp+1Eh] [bp-7Ah]@1
char s2[4]; // [sp+82h] [bp-16h]@1
int v7; // [sp+90h] [bp-8h]@1
v7 = *MK_FP(__GS__, 20);
strcpy(s2, "unixvswindows");
printf("Password: ");
scanf("%64s", &s1);
if ( !strcmp(&s1, s2) )
{
puts("Access granted..");
setuid(0);
execlp("id", "id", 0);
}
else
{
puts("Access denied..");
}
result = 0;
v4 = *MK_FP(__GS__, 20) ^ v7;
return result;
}
源代码需要我们输入密码,只要输入的密码等于“unixvswindows”,程序就会调用setuid(0);从而帮助我们获得root权限。
先给elfpass赋权限:
开始攻击,输入密码:
成功获得root权限。