[英]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
函數。 但現在沒有任何效果。
這里有兩個潛在的問題:
通過使用sprintf(.., argv[1])
,您似乎期待來自 argv 的輸入。 但是./a < input
將文件定向到 STDIN
ASLR 可能會搞砸你的漏洞利用。 這意味着您不知道地址是否正確。
如果沒有二進制文件 (a) 本身,或者至少沒有 Makefile,很難回答這樣的問題。
如果我是你,我會使用調試器(GDB 很棒),直到漏洞利用。 但值得注意的是,使用 ASLR 會很困難。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.