编码:
void doit()
{
system("/bin/sh");
exit(0);
}
int main(int argc, char **argv)
{
static int the_var;
char buf[512];
the_var = 20;
strncpy (buf, argv[1], sizeof(buf) - 1);
printf (buf);
if (the_var != 20)
{
doit();
} else {
printf ("\nthe_var @ 0x%08x = %d 0x%08x\n", &the_var, the_var, the_var);
}
}
程序以粘性位(所有者 uid 0)运行,我所要做的就是破解它并/bin/sh
以 root 身份运行。
我知道如何用fe
. 缓冲区溢出和strcpy
(shellcode),但不要在这个上使用“格式字符串攻击”。
如您所见,有一个var the_var
,如果它不等于 50 则 shell 正在运行(也许尝试以某种方式更改它,一些肮脏的魔法?)。无论如何,有一个printf (buf)