[26881] 2019-12-20_一道题彻底理解PwnHeapUnlink

文档创建者:s7ckTeam
浏览次数:1
最后更新:2025-01-19
2019-12-20_一道题彻底理解PwnHeapUnlink   P w n   H e a p   U n l i n k   s h a v c h e n   M s 0 8 0 6 7   2 0 1 9 - 1 2 - 2 0 u n l i n k   c h u n k   u n l i n k     u n l i n k   c h u n k     u n l i n k   1 .   U A F     f r e e     s m a l l b i n     u n s o r t e d   b i n     f d     b k   2 .     U A F     c h u n k   U A F   c h u n k     p t r 1 .     f d     p t r   -   0 x 1 8 2 .     b k     p t r   -   0 x 1 0 3 .     u n l i n k p t r     p t r   -   0 x 1 8 使   U A F   c h u n k     p t r     p t r   -   0 x 1 8 m a l l o c . c         _ i n i t _ f r e e                 # d e f i n e   u n l i n k ( A V ,   P ,   B K ,   F D )   / / l i n e : 1 4 0 5
P   c h u n k B K c h u n k F D c h u n k c h u n k p r e v _ s i z e c h u n k s i z e `   f d     b k     P     c h u n k     F D   c h u n k     B K 8   b y t e s   /   ( 6 4 ) # d e f i n e   u n l i n k ( A V ,   P ,   B K ,   F D )     ( _ _ b u i l t i n _ e x p e c t   ( c h u n k s i z e ( P )   ! =   p r e v _ s i z e   ( n e x t _ c h u n k ( P ) ) ,   0 ) )                   m a l l o c _ p r i n t e r r   ( " c o r r u p t e d   s i z e   v s .   p r e v _ s i z e " ) ;         F D   =   P - > f d ;         B K   =   P - > b k ;        
  c h e c k     f a k e   c h u n k   f d   b k     f d       ( & p - 0 x 1 8 )   b k     ( & p - 0 x 1 0 )     ( _ _ b u i l t i n _ e x p e c t   ( F D - > b k   ! =   P   | |   B K - > f d   ! =   P ,   0 ) )                                     m a l l o c _ p r i n t e r r   ( " c o r r u p t e d   d o u b l e - l i n k e d   l i s t " ) ;         - > f d - > b k   = =   P   < = >   * ( P - > f d   +   0 x 1 8 )   = =   P   - > b k - > f d   = =   P   < = >   * ( p - > b k   +   0 x 1 0 )   = =   P   P - > f d + 0 x 1 8 p - > b k + 0 x 1 0 P - > f d   =   & P   -   0 x 1 8   - > b k   =   & P   -   0 x 1 0  
,   U n l i n k     P     s m a l l b i n     l a r g e b i n     b i n     c h u n k     f d     b k       P   =   & P   -   0 x 1 0         P   =   & P   -   0 x 1 8     P     ( & p - 0 x 1 8 )     P   =   f r e e _ g o t ,   * ( & P - 0 x 1 8 )   =   s y s t e m f r e e s y s t e m l a r g e b i n   s m a l l b i n     l a r g e b i n     l a r g e b i n     f d n e x t s i z e   b k n e x t s i z e   s m a l l b i n     c h u n k     f d n e x t s i z e     b k n e x t s i z e   使   l a r g e b i n   c h u n k s   c h u n k     f d n e x t s i z e     b k n e x t s i z e   - > b k   =   B K   < = >   P - > f d - > b k   =   p - > b k   < = >   * ( P - > f d   +   0 x 1 8 )   =   P - > b k   / / - > f d   =   F D   < = >   P - > b k - > f d   =   p - > f d   < = >   * ( P - > b k   +   0 x 1 0 )   =   P - > f d   / /         P - > f d   =   & P   -   0 x 1 8     * ( & P   -   0 x 1 8   +   0 x 1 8 )   =   P - > b k   = >   P   =   P - > b k   P - > b k   =   & P   -   0 x 1 0     P   =   & P   -   0 x 1 0   P - > b k   =   & P   -   0 x 1 0     * ( P - > b k   +   0 x 1 0 )   =   P - > f d   = >   P   =   P - > f d   P - > f d   =   & P   -   0 x 1 8     P   =   & P   -   0 x 1 8
  P - > f d n e x t s i z e   ! =   n u l l     P - > f d n e x t s i z e   = =   n u l l     P     c h u n k s   c h u n k   P     f d n e x t s i z e     b k n e x t s i z e     F D - > f d _ n e x t s i z e   = =   N U L L     P     F D     c h u n k s     c h u n k   P - > f d _ n e x t s i z e   = =   P     P     c h u n k s     c h u n k     F D     P     f d n e x t s i z e     b k n e x t s i z e     F D - > f d _ n e x t s i z e   ! =   N U L L     F D     c h u n k s     c h u n k   ( ! i n _ s m a l l b i n _ r a n g e   ( P - > s i z e )                                         & &   _ _ b u i l t i n _ e x p e c t   ( P - > f d _ n e x t s i z e   ! =   N U L L ,   0 ) )   {         . . .   ( F D - > f d _ n e x t s i z e   = =   N U L L )   {                                                                         i f   ( P - > f d _ n e x t s i z e   = =   P )                                                                                 F D - > f d _ n e x t s i z e   =   F D - > b k _ n e x t s i z e   =   F D ;                                                           e l s e   {                                                                                                         F D - > f d _ n e x t s i z e   =   P - > f d _ n e x t s i z e ;                                                                           F D - > b k _ n e x t s i z e   =   P - > b k _ n e x t s i z e ;                                                                           P - > f d _ n e x t s i z e - > b k _ n e x t s i z e   =   F D ;                                                                           P - > b k _ n e x t s i z e - > f d _ n e x t s i z e   =   F D ;                                                                       }                                                                                           }   e l s e   {                                                                                                 P - > f d _ n e x t s i z e - > b k _ n e x t s i z e   =   P - > b k _ n e x t s i z e ;                                                           P - > b k _ n e x t s i z e - > f d _ n e x t s i z e   =   P - > f d _ n e x t s i z e ;                                                       }                                          
  6 4     C a n a r y     N X     N o t e 使   I D A   1 .     f r e e n o t e   f i l e   f r e e n o t e _ x 6 4         f r e e n o t e _ x 6 4 :   E L F   6 4 - b i t   L S B   e x e c u t a b l e ,   x 8 6 - 6 4 ,   v e r s i o n   1   ( S Y S V ) ,   d y n a m i c a l l y   l i n k e d ,   i n t e r p r e t e r   / l i b 6 4 / l ,   f o r     f r e e n o t e   c h e c k s e c   f r e e n o t e _ x 6 4 [ * ]   ' / m n t / h g f s / c t f _ d e b u g / H e a p / u n l i n k / f r e e n o t e / f r e e n o t e _ x 6 4 '         A r c h :           a m d 6 4 - 6 4 - l i t t l e         R E L R O :         P a r t i a l   R E L R O         S t a c k :         C a n a r y   f o u n d         N X :               N X   e n a b l e d         P I E :             N o   P I E   ( 0 x 4 0 0 0 0 0 )     . / f r e e n o t e   0 o p s   F r e e   N o t e   = =   L i s t   N o t e   N e w   N o t e   E d i t   N o t e   D e l e t e   N o t e   E x i t = = = = = = = = = = = = = = = = = = = = Y o u r   c h o i c e :
q w o r d 6 0 2 0 A 8   m a i n   l i s t   l i s t   i n i t h e a p     s u b _ 4 0 0 9 4 E     m a i n     n  
  v 0   =   2 5 6   ( l i s t   +   8 )   =   0   l i s t   8   ( l i s t   +   2 4 L L   *   i   +   1 6 )   l i s t     s t r u c t _ a r r a y   l i s t   +   2 4 L L   *   i   +   1 6 / 2 4 / 3 2   s t r u c t _ a r r a y   8 使 S h i f t   F 9   F n   +   P g D n   d     d q   s t r u c t l i s t     s t r u c t a r r a y   ( s t r u c t   s t r u c t _ a r r a y )   * v 0   =   2 5 6 L L   2 5 6   v 0   =   m a l l o c ( 0 x 1 8 1 0 u L L )     s t r u c t _ l i s t     i n i t h e a p     l i s t     s t r u c t l i s t   * l i s t   使 y
  i n i t _ h e a p     F 5     l i s t _ 0     c o u n t   N e w     i f   (   l i s t - > f i e l d 8   <   l i s t - > c o u n t )   f i e l d 8     c u r r e n t _ c o u n t , i n i t _ h e a p f i e l d _ 0
, 2 . N e w   i f   (   ! l i s t - > s t r u c t a r r a y [ i ] . f i e l d 0   )     f i e l d _ 0   使   0     f l a g   v 4   =   s u b 2 0 0 9 4 E     v 4   ,   f i e l d 8     l e n g t h   v 1   =   m a l l o c ( ( 1 2 8   -   v 4   %   1 2 8 )   %   1 2 8   +   v 4 )     v 1     f i e l d _ 1 0   b u f 1 2 8 f i e l d _ 8 f i e l d _ 1 0 N e w b u f N e w
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则