मैं एक बहुत ही सरल बफर ओवरफ़्लो हमला निष्पादित करने का प्रयास कर रहा हूं। मैं इसके लिए बहुत नौसिखिया हूँ। तो, अगर इस सवाल का बेवकूफ है, कृपया मुझे :-)बफर ओवरफ़्लो अटैक
बहाना कोड:
#include<stdio.h>
#include<stdlib.h>
int i, n;
void confused(int i)
{
printf("**Who called me? Why am I here?? *** %x\n ", i);
}
void shell_call(char *c)
{
printf(" ***Now calling \"%s\" shell command *** \n", c);
system(c);
}
void victim_func()
{
int a[4];
printf("Enter n: "); scanf("%d",&n);
printf("~~~~~~~~~~~~~ values and address of n locations ~~~~~~~~~~");
for (i = 0;i <n ;i++)
printf ("\n a[%d] = %x, address = %x", i, a[i], &a[i]);
printf("\nEnter %d HEX Values \n", n);
// Buffer Overflow vulnerability HERE!
for (i=0;i<n;i++) scanf("%x",&a[i]);
printf("Done reading junk numbers\n");
}
int main()
{
victim_func();
printf(“\n done”);
return 0;
}
जब मैं objdump का उपयोग समारोह पतों प्राप्त करने के लिए, मैं निम्नलिखित है:
main(): 0x804854d
Address of main() where printf() is called: 0x8048563
victim_func(): 0x8048455
confused(): 0x8048414
अब, मैं चाहता हूं कि वहां बफर को बहने से पीड़ित_फनक() से 'भ्रमित()' फ़ंक्शन पर कूदना है, और भ्रमित() के पते पर वापसी पता ओवरराइट करना है। और मैं उलझन में() मुख्य रूप से printf() कथन से वापस लौटना चाहता हूं, और सामान्य रूप से बाहर निकलना चाहता हूं। तो, मैं निम्नलिखित इनपुट प्रदान
Enter n: 7
Enter 7 HEX values:
1
2
3
4
5
8048414 (This is to jump to confused)
8048563 (this is to jump to printf() in main)
हालांकि, इसे वापस victim_func लिए उतर रहा है() कार्यक्रम प्रिंट कि printf बयान से "हो गया" और प्रिंट, "Enter n:"
मैं क्या कर रहा हूँ गलत? किसी भी तरह की सहायता का स्वागत किया जाएगा!
पीएस: मुझे यकीन नहीं है कि मैंने सही सवाल रखा है या नहीं। यदि कोई और जानकारी की आवश्यकता है, तो कृपया मुझे बताएं।
वास्तव में, यह स्कूल में एक असाइनमेंट है! – Ashwin
यदि यह वास्तव में होमवर्क है, तो कृपया इसे इस तरह टैग करें। – NPE
@VJo मुझे लगता है कि यह एक महान शैक्षणिक कार्य है - मैं इसे स्वयं करने का प्रयास कर रहा हूं: इसे कोड के असेंबलर कार्यान्वयन के साथ गहरी समझ और प्रत्यक्ष प्रयोग की आवश्यकता है। सफेद टोपी भी इन विचारों को समझने की जरूरत है। – Elemental