Heap Functions Security Checks
Last updated
Last updated
AWS हैकिंग सीखें और अभ्यास करें:HackTricks प्रशिक्षण AWS रेड टीम एक्सपर्ट (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks प्रशिक्षण GCP रेड टीम एक्सपर्ट (GRTE)
अधिक जानकारी के लिए जांचें:
unlinkयह किये गए जांचों का सारांश है:
जांचें करें कि चंक का निर्दिष्ट आकार अगले चंक में निर्दिष्ट prev_size
के समान है
त्रुटि संदेश: corrupted size vs. prev_size
यह भी जांचें कि P->fd->bk == P
और P->bk->fw == P
त्रुटि संदेश: corrupted double-linked list
अगर चंक छोटा नहीं है, तो जांचें कि P->fd_nextsize->bk_nextsize == P
और P->bk_nextsize->fd_nextsize == P
त्रुटि संदेश: corrupted double-linked list (not small)
अधिक जानकारी के लिए जांचें:
malloc & sysmallocतेज बिन खोज के दौरान जांचें:
अगर चंक मिस-संरेखित है:
त्रुटि संदेश: malloc(): unaligned fastbin chunk detected 2
अगर आगे का चंक मिस-संरेखित है:
त्रुटि संदेश: malloc(): unaligned fastbin chunk detected
अगर वापसी चंक का आकार सही नहीं है क्योंकि यह तेज बिन में अपने सूचक में है:
त्रुटि संदेश: malloc(): memory corruption (fast)
अगर कोई भी चंक टकचेन को भरने के लिए उपयोग किया गया है और यह मिस-संरेखित है:
त्रुटि संदेश: malloc(): unaligned fastbin chunk detected 3
छोटे बिन खोज के दौरान जांचें:
अगर victim->bk->fd != victim
:
त्रुटि संदेश: malloc(): smallbin double linked list corrupted
संयोजन के दौरान जांचें प्रत्येक तेज बिन चंक के लिए:
अगर चंक मिस-संरेखित है तो ट्रिगर करें:
त्रुटि संदेश: malloc_consolidate(): unaligned fastbin chunk detected
अगर चंक का आकार अलग है जो कि इसके सूचक में है क्योंकि यह है:
त्रुटि संदेश: malloc_consolidate(): invalid chunk size
अगर पिछला चंक उपयोग में नहीं है और पिछला चंक पिछला_चंक द्वारा निर्दिष्ट किए गए आकार से अलग है:
त्रुटि संदेश: corrupted size vs. prev_size in fastbins
अव्यवस्थित बिन खोज के दौरान जांचें:
अगर चंक का आकार अजीब है (बहुत छोटा या बहुत बड़ा):
त्रुटि संदेश: malloc(): invalid size (unsorted)
अगर अगले चंक का आकार अजीब है (बहुत छोटा या बहुत बड़ा):
त्रुटि संदेश: malloc(): invalid next size (unsorted)
अगर अगले चंक द्वारा निर्दिष्ट पिछले का आकार चंक के आकार से भिन्न है:
त्रुटि संदेश: malloc(): mismatching next->prev_size (unsorted)
अगर नहीं victim->bck->fd == victim
या नहीं victim->fd == av (arena)
:
त्रुटि संदेश: malloc(): unsorted double linked list corrupted
हमेशा आखिरी चेक कर रहे हैं, इसका fd हमेशा अरेना संरचना की ओर इशारा करना चाहिए।
अगर अगला चंक इसका पिछला उपयोग में नहीं दिखा रहा है:
त्रुटि संदेश: malloc(): invalid next->prev_inuse (unsorted)
अगर fwd->bk_nextsize->fd_nextsize != fwd
:
त्रुटि संदेश: malloc(): largebin double linked list corrupted (nextsize)
अगर fwd->bk->fd != fwd
:
त्रुटि संदेश: malloc(): largebin double linked list corrupted (bk)
बड़े बिन (द्वारा सूचक) खोज के दौरान जांचें:
bck->fd-> bk != bck
:
त्रुटि संदेश: malloc(): corrupted unsorted chunks
बड़े बिन (अगला बड़ा) खोज के दौरान जांचें:
bck->fd-> bk != bck
:
त्रुटि संदेश: malloc(): corrupted unsorted chunks2
शीर्ष चंक का उपयोग करते समय जांचें:
chunksize(av->top) > av->system_mem
:
त्रुटि संदेश: malloc(): corrupted top size
tcache_get_n
tcache_get_n
में जांचें:
अगर चंक मिस-संरेखित है:
त्रुटि संदेश: malloc(): unaligned tcache chunk detected
tcache_thread_shutdown
tcache_thread_shutdown
में जांचें:
अगर चंक मिस-संरेखित है:
त्रुटि संदेश: tcache_thread_shutdown(): unaligned tcache chunk detected
__libc_realloc
__libc_realloc
में जांचें:
अगर पुराना पॉइंटर मिस-संरेखित है या आकार गलत था:
त्रुटि संदेश: realloc(): invalid pointer
_int_free
अधिक जानकारी के लिए जांचें:
free_int_free
की शुरुआत के दौरान जांचें:
पॉइंटर संरेखित है:
त्रुटि संदेश: free(): invalid pointer
MINSIZE
से अधिक आकार और आकार भी संरेखित है:
त्रुटि संदेश: free(): invalid size
_int_free
टकचेन में जांचें:
अगर mp_.tcache_count
से अधिक एंट्री हैं:
त्रुटि संदेश: free(): too many chunks detected in tcache
अगर एंट्री संरेखित नहीं है:
त्रुटि संदेश: free(): unaligned chunk detected in tcache 2
अगर मुक्त चंक पहले ही मुक्त किया गया था और टकचेन में चंक के रूप में मौजूद है:
त्रुटि संदेश: free(): double free detected in tcache 2
_int_free
तेज बिन में जांचें:
अगर चंक का आकार अमान्य है (बहुत बड़ा या छोटा) तो ट्रिगर करें:
त्रुटि संदेश: free(): invalid next size (fast)
अगर जोड़ा गया चंक पहले से ही तेज बिन के शीर्ष में था:
त्रुटि संदेश: double free or corruption (fasttop)
अगर शीर्ष पर चंक का आकार उस चंक के आकार से भिन्न है जिसे हम जोड़ रहे हैं:
त्रुटि संदेश: invalid fastbin entry (free)
_int_free_merge_chunk
_int_free_merge_chunk
में जांचें:
अगर चंक टॉप चंक है:
त्रुटि संदेश: double free or corruption (top)
अगला चंक एरीना की सीमाओं के बाहर है:
त्रुटि संदेश: double free or corruption (out)
अगर चंक को उपयोग के रूप में नहीं चिह्नित किया गया है (पिछले चंक से prev_inuse
में):
त्रुटि संदेश: double free or corruption (!prev)
अगला चंक का आकार बहुत कम या बहुत बड़ा है:
त्रुटि संदेश: free(): invalid next size (normal)
पिछला चंक उपयोग में नहीं है, तो समेकित करने का प्रयास करेगा। लेकिन, अगर prev_size
पिछले चंक में दिखाए गए आकार से भिन्न है:
त्रुटि संदेश: corrupted size vs. prev_size while consolidating
_int_free_create_chunk
_int_free_create_chunk
में जांचें:
असंक्षेप्त बिन में एक चंक जोड़ना, जांचें कि unsorted_chunks(av)->fd->bk == unsorted_chunks(av)
:
त्रुटि संदेश: free(): corrupted unsorted chunks
do_check_malloc_state
do_check_malloc_state
में जांचें:
अयोग्य फास्ट बिन चंक:
त्रुटि संदेश: do_check_malloc_state(): unaligned fastbin chunk detected
malloc_consolidate
malloc_consolidate
में जांचें:
अयोग्य फास्ट बिन चंक:
त्रुटि संदेश: malloc_consolidate(): unaligned fastbin chunk detected
गलत फास्ट बिन चंक का आकार:
त्रुटि संदेश: malloc_consolidate(): invalid chunk size
_int_realloc
_int_realloc
में जांचें:
आकार बहुत बड़ा या बहुत छोटा है:
त्रुटि संदेश: realloc(): invalid old size
अगले चंक का आकार बहुत बड़ा या बहुत छोटा है:
त्रुटि संदेश: realloc(): invalid next size