
बाइनरी शोषण और रिवर्स-इंजीनियरिंग (असेंबली से सी में)
10 छोटी चुनौतियों के माध्यम से डिस्सेम्बली, बाइनरी एक्सप्लॉइटेशन और रिवर्स-इंजीनियरिंग का अन्वेषण करें।
प्रत्येक स्तर के फ़ोल्डर में आपको मिलेगा:
flag - अगले स्तर का पासवर्ड
README.md - पासवर्ड कैसे खोजें
source.c - रिवर्स इंजीनियर्ड बाइनरी
dissasembly_notes.md - asm पर नोट्स
अधिक विवरण के लिए subject देखें।
अधिक gdb और एक्सप्लॉइटेशन मज़े के लिए पिछला प्रोजेक्ट RainFall देखें।
पहले 42 से OverRide.iso डाउनलोड करें।
Mac OSX पर, VirtualBox इंस्टॉल करें।
VirtualBox में एक नई VM बनाएं (New पर क्लिक करें)।
डिफ़ॉल्ट सेटिंग्स के साथ सभी अगले चरणों को जारी रखें:
इसके बाद Settings > Network > Adapter 1 > Attached to: Bridged Adapter पर क्लिक करें।
अभी भी Settings में Storage > "Controller: IDE" के दाईं ओर, एक CD आइकन है जिसमें + चिह्न है (Add optical drive) पर क्लिक करें। Add Disk Image पर क्लिक करें, और OverRide.iso चुनें।
VM को शुरू करने के लिए Start पर क्लिक करें, एक बार चलने पर यह VM IP पता दिखाएगा और उपयोगकर्ता को लॉगिन करने का संकेत देगा।
एक अलग शेल से उपयोगकर्ता level00 के रूप में पासवर्ड level00 के साथ लॉगिन करें।
ssh level00@{VM_IP} -p 4242
उपयोगकर्ता level00 के रूप में लक्ष्य उपयोगकर्ता level01 का पासवर्ड पढ़ना है, जो /home/users/level01/.pass पर स्थित है। हालांकि, उपयोगकर्ता level00 के पास इस फ़ाइल को पढ़ने की अनुमति नहीं है।
उपयोगकर्ता level00 के होम फ़ोल्डर में SUID सेट और मालिक level01 के साथ एक बाइनरी level00 है।
इसका मतलब है कि जब हम बाइनरी level00 को निष्पादित करते हैं, तो हम उपयोगकर्ता level01 की अनुमतियों के साथ ऐसा करते हैं।
हमें gdb के साथ बाइनरी level00 में एक भेद्यता खोजनी होगी। फिर भेद्यता का उपयोग करके system("/bin/sh") चलाएं, उपयोगकर्ता level01 के रूप में एक शेल खोलना जहां हमारे पास पासवर्ड पढ़ने की अनुमति है।
cat /home/users/level01/.pass
फिर उपयोगकर्ता level01 के रूप में लॉगिन करें।
su level01
प्रत्येक स्तर के लिए दोहराएं।
प्रत्येक स्तर के लिए, हमने बाइनरी के gdb डिस्सेम्बली की जांच करके मूल source.c को रिवर्स इंजीनियर किया।
0 - हार्डकोडेड पासवर्ड
1 - Ret2Libc हमला
2 - printf() फ़ॉर्मेट स्ट्रिंग हमला
3 - ब्रूट फोर्स पासवर्ड
4 - gets() स्टैक ओवरफ्लो + Return-to-libc हमला
5 - env वेरिएबल में शेलकोड + printf() फ़ॉर्मेट स्ट्रिंग हमला
6 - हैश मान gdb से खोजा जा सकता है
7 - असुरक्षित डेटा तालिका पर Ret2Libc हमला
8 - बाइनरी सिमलिंक के माध्यम से पासवर्ड का बैकअप लेती है
9 - एक-से-कम त्रुटि
मैंने यह प्रोजेक्ट अत्यधिक प्रतिभाशाली @dfinnis के साथ एक टीम में लिखा।