buffer-overflow

    1熱度

    4回答

    在這個例子中的C程序, int main (int argc, char* argv[]) { printf("%p\n"); return 0; } 我很困惑,究竟我打印。每次運行程序時,它打印的地址都會發生變化,所以我認爲地址與堆棧有關,比如可能從哪裏開始或什麼地方,但我不確定。 編輯:上面的程序來自Michael Howard和David LeBlanc(2003)

    1熱度

    2回答

    在深入研究之前,我正在對shellcode進行試驗,所以我遇到了shellcoders手冊中的一個例子。示例如下: char shellcode[] = "\xeb\x1a\x5e\x31\xc0\x88\x46\x07\x8d\x1e\x89\x5e\x08\x89\x4 \x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\xe8\xe1\

    1熱度

    2回答

    我正在使用下面的代碼嘗試通過溢出searchstring變量來執行一些存儲在環境變量中的shellcode,以便main的返回地址包含anvironment變量的地址。但是,在printf命令之前,我遇到了分段錯誤。 #include <stdio.h> #include <string.h> void main(int argc, char *argv[]){ char sea

    0熱度

    1回答

    我有一個webserver.c文件,我已經知道錯誤是什麼。它坐落在本節: int check_filename_length(byte len) { if (len < 100) return 1; return 0; } 它把正在發送到Web服務器到一個字節的文件的長度,這樣的事情是大於100個字節仍然可以只要發送它作爲最後的8位被正確指定。 我

    0熱度

    1回答

    如何檢查Windows XP中堆棧金絲雀狀態的狀態?我只發現我們能夠檢查DEP狀態並可以關閉/關閉。如何實現堆棧金絲雀?

    0熱度

    1回答

    我正在嘗試編寫ASM代碼來生成一個shell。 我已經想通了,對於__execve系統調用號是0x3b或59 我需要發送"/bin/sh"作爲第一個參數,一個指向{"/bin/sh", NULL}作爲第二個參數和NULL作爲第三個參數。 通過在英特爾架構x86_64的ASM的convetions - 第一個參數被寫入到寄存器RDI,第二個參數被寫入到寄存器RSI,最後一個參數被寫入到RDX寄存器。

    1熱度

    1回答

    嗨,大家好進出口工作在CTF挑戰,不太瞭解這個ASM命令: mov %edx,0x20(%esp,%eax,4) 林假設它:移動$edx到(0x20 + $esp + $eax + 4) 然而,當我檢查這個使用gdb這是不正確的。任何人都介意解釋這條指令的工作原理 感謝您的幫助!

    -1熱度

    1回答

    我需要幫助瞭解此ROP小工具(如下所示)如何按部就班地工作。 我很困惑,爲什麼在這裏需要mov和pop指令。 p = "" p += pack('<I', 0x08139e7a) # pop edx ; ret p += pack('<I', 0x081e0060) # @ .data p += pack('<I', 0x080f3246) # pop eax ; ret p += '/b

    -1熱度

    1回答

    我有這塊代碼,顯然包含緩衝區溢出,因爲我可以輸入超過4個值到數組a中。我想使用緩衝區溢出來調用一個函數。我知道這個函數的地址。我知道我需要覆蓋函數返回地址,但我不知道如何實際執行此操作?另外,如果我設置n = 5並將5個值寫入數組a,程序不會崩潰,即使只有內存分配了4個值。爲什麼會這樣,我能做些什麼來使程序崩潰?我使用的是舊版本的Ubuntu,它不檢查緩衝區溢出。 int a[4]; for (