4
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
作爲根運行。
我知道如何用fe
破解程序。緩衝區溢出和strcpy
(shellcode),但不要如何在這一個上使用'格式字符串攻擊'。你可以看到,有一個var the_var
,如果它不等於50,那麼shell正在運行(也許嘗試改變它,一些骯髒的魔法?)。你可以看到,有一個var the_var
,如果它不等於50,然後殼運行無論如何,有一個printf (buf)
感謝提示,它很簡單。 – makowiecki