簡體   English   中英

如何利用段錯誤並運行 shell 命令?

[英]How can I exploit a segfault and run a shell command?

在此之后: 如何利用緩沖區溢出?

我有一個使用-fno-stack-protector編譯的代碼:

#include <stdio.h>

void shellcode(){
    printf("\n Reached shellcode!");
}

int main(int argc, char **argv){
    char buf[3];
    sprintf(buf, "%s", argv[1]);
    return 0;
}

但無法執行shellcode函數。

就像在那篇文章中我正在使用的那樣:

python -c 'print "A"*27+"\x49\x11\x00\x00\x00\x00\x00\x00"' > input
./a < input

在以下位置獲取段錯誤:

./a 12345678901
Segmentation fault (core dumped)

但什么也沒發生。

我的主要目標是在 linux 操作系統上執行ls而不是shellcode函數。 但現在沒有任何效果。

這里有兩個潛在的問題:

  1. 通過使用sprintf(.., argv[1]) ,您似乎期待來自 argv 的輸入。 但是./a < input將文件定向到 STDIN

  2. ASLR 可能會搞砸你的漏洞利用。 這意味着您不知道地址是否正確。

如果沒有二進制文件 (a) 本身,或者至少沒有 Makefile,很難回答這樣的問題。

如果我是你,我會使用調試器(GDB 很棒),直到漏洞利用。 但值得注意的是,使用 ASLR 會很困難。

暫無
暫無

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

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