簡體   English   中英

如何使用緩沖區溢出執行“printf字符串攻擊”?

[英]How can I perform a “printf string attack” using a buffer overflow?

代碼:

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),但是如何在這一個上使用'format string attack'。

正如你所看到的,有一個var the_var ,如果它不等於50那么shell正在運行(也許試着以某種方式改變它,一些骯臟的魔法?)。 無論如何,有一個printf (buf)

你控制buf 傳遞%x格式字符串以轉儲堆棧,並傳遞%x %n以覆蓋堆棧中的對象the_var 從你的程序,如果對象the_var被覆蓋時, doit函數將被調用, /bin/sh將被執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM