[11943] 2017-10-28_DanceInHeap(三):一些堆利用的方法(中)

文档创建者:s7ckTeam
浏览次数:4
最后更新:2025-01-18
2017-10-28_DanceInHeap(三):一些堆利用的方法(中) D a n c e   I n   H e a p h e l l o w u z e k a i   F r e e B u f   2 0 1 7 - 1 0 - 2 8 h e l l o w u z e k a i F r e e B u f 0 x 0 0   U A F   b i n     c h u n k     u n l i n k u n s o r t e d b i n   a t t a c k c h u n k c h u n k   s i z e   p r e v _ s i z e   c h u n k   s i z e c h u n k   h e a d e r s i z e s i z e c h u n k   h e a d e r 0 x 0 1   f a s t b i n   a t t a c k   f a s t b i n     d o b u l e   f r e e   f a s t b i n   c h u n k   f d     f a s t b i n   m a l l o c     c h u n k   f a s t b i n c h u n k   c h u n k     f a s t b i n   c     f d     f a s t b i n     a     m a l l o c   0 x 0 1   f a s t b i n   a t t a c k 0 x 0 2   o v e r l a p p i n g   c h u n k   1 0 x 0 3   o v e r l a p p i n g   c h u n k   2 0 x 0 4   # i n c l u d e   < s t d i o . h > # i n c l u d e   < s t d l i b . h > i n t   m a i n ( )   {         c h a r   * a = m a l l o c ( 2 4 ) ;         c h a r   * b = m a l l o c ( 2 4 ) ;         f r e e ( a ) ;         f r e e ( b ) ;         f r e e ( a ) ; }     - - - - - - -           - - - - - - -           - - - - - - -           - - - - - - -         - - - - - - -   |     | - >   |       a       | - >   |       b       | - >   |       a       | - > |     n u l l   |     - - - - - - -           - - - - - - -           - - - - - - -           - - - - - - -         - - - - - - - c   =   m a l l o c ( 2 4 ) ;     - - - - - - -           - - - - - - -           - - - - - - -           - - - - - - -   |     | - >   |       b       | - >   |       a       | - >   |     n u l l   |     - - - - - - -           - - - - - - -           - - - - - - -           - - - - - - -     - - - - - - -           - - - - - - -           - - - - - - -           - - - - - - -   |     | - >   |       b       | - >   |       a       | - >   | |     - - - - - - -           - - - - - - -           - - - - - - -           - - - - - - -
  f a s t b i n   m a l l o c     c h u n k     f a s t b i n     c h u n k     c h u n k   s i z e     c h u n k     s i z e   s i z e   & s t a c k   -   8   m a l l o c     c h u n k   c h u n k   f a s t b i n   a t t a c k     c h u n k   0 x 0 2   o v e r l a p p i n g   c h u n k   1   c h u n k   s i z e     c h u n k   c h u n k ,   p r e v _ s i z e     0 x 1 0   m a l l o c ( 0 x 1 0 0 - 8 ) ,   ( 0 x 1 0 0 - 8 ) + 0 x 1 0 - 0 x 8 , 0 x 1 0 0 ( 0 x 1 0 ) 0 x 1 0 0 - 8 m a l l o c ( 0 x 1 0 0 ) 0 x 1 0 8   c h u n k     f r e e     b b   u n s o r t e d b i n     b i n s i z e 0 x 1 0 0 c h u n k s i z e 0 x 1 8 0 0 x 1 8 0 c h u n k a b s i z e m a l l o c 0 x 1 8 0   c h u n k b 0 x 1 8 0 c o k d c c , 0 x 0 3   o v e r l a p p i n g   c h u n k   2 s i z e c h u n k     c h u n k s i z e f r e e 4 c h u n k m a l l o c ( 2 4 ) ; m a l l o c ( 2 4 ) ;     - - - - - - -           - - - - - - -   |     | - >   | |     - - - - - - -           - - - - - - - i n t   s t a c k   =   0 x 3 0   / /   2 4   +   h e a d e r   =   0 x 2 8   0 x 1 0     0 x 3 0 d   =   m a l l o c ( 2 4 ) ; d [ 2 0 ]   =   0 x d e a d b e e f   / / r i p a   =   m a l l o c ( 0 x 1 0 0 - 8 ) ; b   =   m a l l o c ( 0 x 1 0 0 - 8 ) ; c   =   m a l l o c ( 0 x 1 0 0 - 8 ) ; f r e e ( b ) ; * ( a + 0 x f 8 )   =   0 x 1 8 1   / /   0 x 0 1 a i n u s e d   =   m a l l o c ( 0 x 1 8 0 - 8 ) ;
a b s i z e b s i z e c f r e e c h u n k s i z e d f r e e t o p c h u n k f r e e b m a l l o c c 0 x 0 2 0 x 0 4   c h u n k o f f - b y - o n e 使 c h u n k   s i z e p o i s o n _ n u l l _ b y t e   c h u n k   s i z e   使   m a l l o c f r e e * h e l l o w u z e k a i F r e e B u f a   =   m a l l o c ( 0 x 1 0 0 - 8 ) ; b   =   m a l l o c ( 0 x 1 0 0 - 8 ) ; c   =   m a l l o c ( 0 x 1 0 0 - 8 ) ; d   =   m a l l o c ( 0 x 1 0 0 - 8 ) ; / /   t o p   c h u n k     f r e e * ( a + 0 x f 8 )   =   0 x 2 0 1   / /   0 x 1 i n u s e f r e e ( p ) ; e   =   m a l l o c ( 0 x 2 0 0 - 8 ) ;
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则