CTF राइटअप्स
नमस्ते, मैं Sean हूँ और मैं अपने खाली समय में CTF समस्याओं को हल करने का आनंद लेता हूँ। मेरी वर्तमान भूमिका में मुझे बहुत सारी binary exploitation और software reverse engineering करनी पड़ती है, इसलिए मैं इन्हीं श्रेणियों पर ध्यान केंद्रित करता हूँ। मैं ऑनलाइन जो अधिकांश राइटअप्स देखता हूँ वे बेकार होते हैं और मुझे उम्मीद है कि ये कुछ मूलभूत अवधारणाओं को समझाने में बेहतर काम करेंगे।
अपने सभी समाधानों में मैं पूरी कोशिश करता हूँ कि pwntools के साथ लिखा गया एक पुनरुत्पादन योग्य समाधान शामिल करूँ। यह flags के बारे में नहीं है, बल्कि उस यात्रा के बारे में है जिसने हमें flag तक पहुँचाया।
उम्मीद है कि यह समय के साथ बासी न हो, लेकिन मैंने इनमें से कुछ CTF समस्याओं के video walkthroughs बनाने की भी कोशिश की है। आप उन्हें YouTube पर देख सकते हैं।
नीचे सामान्य Unix Access विषयों और उनसे संबंधित CTF चुनौतियों की सूची दी गई है।
Unix Access ज्ञान
भेद्यता वर्ग
भेद्यता वर्गों का शोषण करने की क्षमता प्रदर्शित करें
- कार्यशील shellcode को शुरुआत से लिखें और shellcode लिखने के सभी चरण
दिखाएँ:
- निम्नलिखित शमन उपायों के साथ और बिना stack buffer overflow: address
space layout randomization (ASLR), Non-eXecutable memory (NX), और stack
canaries:
- heap grooming और function pointers वाले objects का उपयोग करके heap buffer overflow:
- heap डेटा संरचनाओं को भ्रष्ट करके heap buffer overflow:
- function pointers वाले objects के साथ UAF:
- ऐसे objects के साथ UAF जो arbitrary read/write primitive की अनुमति देते हैं:
- Data type confusion भेद्यताएँ
- arbitrary read/write primitive के लिए format string भेद्यताएँ:
- uninitialized variables का उपयोग exploitation के लिए कैसे किया जा सकता है:
exploitation primitives को लागू करने की क्षमता प्रदर्शित करें
- Arbitrary write primitive:
- Relative write primitive:
- Arbitrary read primitive:
- primitives को exploit बनाने के लिए कैसे जोड़ा जा सकता है
- write primitive का उपयोग privileges बढ़ाने/arbitrary
code निष्पादित करने के लिए कैसे किया जा सकता है:
निम्नलिखित ELF linking संरचनाओं के उद्देश्य और संरचना का वर्णन करें और binary exploitation में उनका दुरुपयोग कैसे किया जा सकता है
- Procedural Linkage Table:
- Global Offset Table:
PLT/GOT डेटा संरचना परस्पर क्रिया के संदर्भ में निम्नलिखित dynamic relocation मोड का वर्णन करें, और उनके बीच exploitation primitives कैसे भिन्न होते हैं
- Partial RELRO:
- Full RELRO:
ROP/JOP लागू करने की क्षमता प्रदर्शित करें
- ROP/JOP gadgets खोजें:
- libc functions और system calls को कॉल करें:
- code निष्पादित करने के लिए gadgets को श्रृंखलाबद्ध करें:
- arbitrary shellcode निष्पादित करें
exploitation mitigations के उद्देश्य और कार्यान्वयन का वर्णन करें
- ASLR
- Data Execution Prevention (DEP)/NX:
- Position Independent Executables (PIEs)
- PIEs exploitation को कैसे प्रभावित करते हैं
- Stack canaries:
- Safe list unlinking
सॉफ्टवेयर रिवर्स इंजीनियरिंग
निम्नलिखित की तकनीकों और उपयोग के मामलों की तुलना करें और उनके अंतर बताएँ
- स्थैतिक रिवर्स इंजीनियरिंग:
- डायनेमिक रिवर्स इंजीनियरिंग:
static और dynamic reverse engineering करने के लिए निम्नलिखित प्रकार के उपकरणों का उपयोग करने में परिचितता प्रदर्शित करें
- स्थैतिक डिस्सेम्बलर
- डीबगर
- उपर्युक्त उपकरणों का उपयोग करके स्वचालन तकनीकें
फज़िंग तकनीकें
- Dumb fuzzing तकनीकें
- Code-coverage आधारित फज़िंग
- Symbolic execution
CTF ब्लॉग पोस्ट जो मुझे उपयोगी लगते हैं