# One Gadget {{#include ../../banners/hacktricks-training.md}} ## Basic Information [**One Gadget**](https://github.com/david942j/one_gadget) आपको **system** और **"/bin/sh"** का उपयोग करने के बजाय एक शेल प्राप्त करने की अनुमति देता है। **One Gadget** libc लाइब्रेरी के अंदर एक ऐसा तरीका खोजेगा जिससे आप केवल एक **address** का उपयोग करके शेल प्राप्त कर सकें (`execve("/bin/sh")`)।\ हालांकि, सामान्यतः कुछ सीमाएँ होती हैं, सबसे सामान्य और आसानी से टालने योग्य सीमाएँ हैं जैसे कि `[rsp+0x30] == NULL`। चूंकि आप **RSP** के अंदर के मानों को नियंत्रित करते हैं, इसलिए आपको कुछ और NULL मान भेजने की आवश्यकता है ताकि सीमा टल सके। ![](<../../images/image (615).png>) ```python ONE_GADGET = libc.address + 0x4526a rop2 = base + p64(ONE_GADGET) + "\x00"*100 ``` One Gadget द्वारा निर्दिष्ट पते पर आपको **`libc`** लोड होने का आधार पता **जोड़ना** होगा। > [!TIP] > One Gadget **मनमाने लेखन 2 कार्यान्वयन तकनीकों** के लिए **महान सहायता** है और यह **ROP श्रृंखलाओं को सरल बना सकता है** क्योंकि आपको केवल एक पते को कॉल करने की आवश्यकता होती है (और आवश्यकताओं को पूरा करना होता है)। {{#include ../../banners/hacktricks-training.md}}