के लिए अनुमति देने के लिए संकलित सी मैं बफर ओवरफ्लो के बारे में सीख रहा हूं और एक बनाने की कोशिश कर रहा हूं।बफर ओवरफ्लो
#include <stdio.h>
char *secret = "password";
void go_shell() {
char *shell = "/bin/sh";
char *cmd[] = { "/bin/sh", 0 };
setreuid(0);
execve(shell,cmd,0);
}
int authorize() {
char password[64];
printf("Enter Password: ");
gets(password);
if (!strcmp(password,secret)) {
return 1;
}
else {
return 0;
}
}
int main() {
if (authorize()) {
printf("login successful\n");
go_shell();
} else {
printf("Incorrect password\n");
}
return 0;
}
मैं जीसीसी के साथ इस संकलन और उसके बाद gdb
मैं पासवर्ड और कार्यक्रम दुर्घटनाओं के रूप में लगभग 100 'ए' s दर्ज में इसे चलाने: मैं इस कोड है।
समस्या नहीं रजिस्टर 0x4141414141414141
मैं इस googled और gcc
को -fno-stack-protector
झंडा जोड़ा है, जिसकी अनुमति RBP 0x4141414141414141
लेकिन कुछ भी बाकी को ओवरराइट किया जा करने के लिए करने के लिए ओवरराइट किया जाता है।
मैं सोच रहा था कि कोड को संकलित करने का कोई तरीका था ताकि आरआईपी ओवरराइट किया जा सके।
क्या आप लिनक्स का उपयोग कर रहे हैं? मुझे लगता है कि आपको कुछ ध्वज सेट करने की भी आवश्यकता है। मैक ओएसएक्स का उपयोग कर – nhahtdh
। कोई विचार क्या ध्वज है? – carloabelli
मैक ओएसएक्स के बारे में मुझे नहीं पता - शायद उबंटू से काफी अलग होने जा रहा है (क्षमा करें, मैंने वास्तव में यह उबंटू पर किया था, लिनक्स नहीं)। – nhahtdh