[26564] 2021-07-13_从PDO下的注入思路到获得GIT2000star项目0day(文末0day福利)

文档创建者:s7ckTeam
浏览次数:2
最后更新:2025-01-19
2021-07-13_从PDO下的注入思路到获得GIT2000star项目0day(文末0day福利) P D O G I T   2 0 0 0 s t a r 0 d a y ( 0 d a y ) J 0 o 1 e y   M 7 8   2 0 2 1 - 0 7 - 1 3 b y p a s s                         使 使 使 使 0 x 0 1   P D O P D O P H P   D a t a   O b j e c t P D O P H P 访 P D O 访 使 使 P H P M y S Q L M y S Q L M y s q l i P D O M y s q l i P D O M y S Q L P H P 5 . 0 5 . 0 3 . 0 P H P 5 . x p r e p a r e p r e p a r e p h p 使 p d o p h p . i n i 0 x 0 2   P D O S Q L q u o t e ( ) ( a d d s l a s h e s ) P D O q u a t e ( ) E G : E G t e s t . s q l < ? p h p $ c o n n   =   n e w   P D O ( ' s q l i t e : / h o m e / l y n n / m u s i c . s q l 3 ' ) ; / *   D a n g e r o u s   s t r i n g   * / $ s t r i n g   =   ' N a u g h t y   '   s t r i n g ' ; p r i n t   " U n q u o t e d   s t r i n g :   $ s t r i n g n " ; p r i n t   " Q u o t e d   s t r i n g : "   .   $ c o n n - > q u o t e ( $ s t r i n g )   .   " n " ; ? > U n q u o t e d   s t r i n g :   N a u g h t y   '   s t r i n g Q u o t e d   s t r i n g :   ' N a u g h t y   ' '   s t r i n g ' S E T   N A M E S   u t f 8 m b 4 ; S E T   F O R E I G N _ K E Y _ C H E C K S   =   0 ; - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   T a b l e   s t r u c t u r e   f o r   u s e r - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - -
p d o . p h p 访 h t t p : / / l o c a l h o s t / p d o . p h p ? u s e r n a m e = a d m i n & p a s s w o r d = a d m i n 使 线 1 - 使 S Q L 使 S Q L S Q L p r e p a r e S Q L r o w C o u n t ( ) s q l 0 1 A l l   c o d e D R O P   T A B L E   I F   E X I S T S   ` u s e r ` ; C R E A T E   T A B L E   ` u s e r `     (     ` i d `   i n t ( 1 0 )   N O T   N U L L ,     ` u s e r n a m e `   v a r c h a r ( 2 5 5 )   C H A R A C T E R   S E T   u t f 8   C O L L A T E   u t f 8 _ u n i c o d e _ c i   N U L L   D E F A U L T   N U L L ,     ` p a s s w o r d `   v a r c h a r ( 2 5 5 )   C H A R A C T E R   S E T   u t f 8   C O L L A T E   u t f 8 _ u n i c o d e _ c i   N U L L   D E F A U L T   N U L L )   E N G I N E   =   M y I S A M   C H A R A C T E R   S E T   =   u t f 8   C O L L A T E   =   u t f 8 _ u n i c o d e _ c i   R O W _ F O R M A T   =   D y n a m i c ; - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   R e c o r d s   o f   u s e r - -   - - - - - - - - - - - - - - - - - - - - - - - - - - - - I N S E R T   I N T O   ` u s e r `   V A L U E S   ( 0 ,   ' a d m i n ' ,   ' a d m i n ' ) ; I N S E R T   I N T O   ` u s e r `   V A L U E S   ( 1 ,   ' u s e r ' ,   ' u s e r ' ) ; S E T   F O R E I G N _ K E Y _ C H E C K S   =   1 ; < ? p h p h e a d e r ( ' c o n t e n t - t y p e = t e x t / h t m l ; c h a r s e t = u t f - 8 ' ) ; $ u s e r n a m e = $ _ G E T [ ' u s e r n a m e ' ] ; $ p a s s w o r d = $ _ G E T [ ' p a s s w o r d ' ] ; t r y {         $ p d o = n e w   P D O ( ' m y s q l : h o s t = l o c a l h o s t ; d b n a m e = t e s t ' , ' r o o t ' , ' r o o t ' ) ;           $ u s e r n a m e = $ p d o - > q u o t e ( $ u s e r n a m e ) ;           $ p a s s w o r d = $ p d o - > q u o t e ( $ p a s s w o r d ) ;         $ s q l = " s e l e c t   *   f r o m   u s e r   w h e r e   u s e r n a m e = { $ u s e r n a m e }   a n d   p a s s w o r d = { $ p a s s w o r d } " ;         e c h o   $ s q l . " < / b r > " ;         $ r o w = $ p d o - > q u e r y ( $ s q l ) ;         f o r e a c h   ( $ r o w   a s   $ k e y   = >   $ v a l u e )   {                 p r i n t _ r ( $ v a l u e ) ;         } } c a t c h ( P O O E x c e p t i o n   $ e ) {         e c h o   $ e - > g e t M e s s a g e ( ) ; } S e l e c t   *   f r o m   w h e r e   n a m e = : u s e r n a m e   a n d   p a s s w o r d = : p a s s w o r d < ? p h p h e a d e r ( ' c o n t e n t - t y p e : t e x t / h t m l ; c h a r s e t = u t f - 8 ' ) ;
2 - S Q L p r e p a r e S Q L r o w C o u n t ( ) s q l h e a d e r ( ' c o n t e n t - t y p e : t e x t / h t m l ; c h a r s e t = u t f - 8 ' ) ; $ u s e r n a m e = $ _ G E T [ ' u s e r n a m e ' ] ; $ p a s s w o r d = $ _ G E T [ ' p a s s w o r d ' ] ; t r y {         $ p d o = n e w   P D O ( ' m y s q l : h o s t = l o c a l h o s t ; d b n a m e = t e s t ' , ' r o o t ' , ' r o o t ' ) ;         $ s q l = ' s e l e c t   *   f r o m   u s e r   w h e r e   n a m e = : u s e r n a m e   a n d   p a s s w o r d = : p a s s w o r d ' ;         $ s t m t = $ p d o - > p r e p a r e ( $ s q l ) ;         $ s t m t - > e x e c u t e ( a r r a y ( " : u s e r n a m e " = > $ u s e r n a m e , " : p a s s w o r d " = > $ p a s s w o r d ) ) ;         e c h o   $ s t m t - > r o w C o u n t ( ) ; } c a t c h ( P D O E x c e p t i o n   $ e ) {         e c h o   $ e - > g e t M e s s a g e ( ) ; } ? > s e l e c t   *   f r o m   u s e r   w h e r e   n a m e = ?   a n d   p a s s w o r d = ? < ? h e a d e r ( ' c o n t e n t - t y p e : t e x t / h t m l ; c h a r s e t = u t f - 8 ' ) ; $ u s e r n a m e = $ _ G E T [ ' u s e r n a m e ' ] ; $ p a s s w o r d = $ _ G E T [ ' p a s s w o r d ' ] ; t r y {         $ p d o = n e w   P D O ( ' m y s q l : h o s t = l o c a l h o s t ; d b n a m e = t e s t ' , ' r o o t ' , ' r o o t ' ) ;         $ s q l = " s e l e c t   *   f r o m   u s e r   w h e r e   u s e r n a m e = ?   a n d   p a s s w o r d = ? " ;         $ s t m t = $ p d o - > p r e p a r e ( $ s q l ) ;         $ s t m t - > e x e c u t e ( a r r a y ( $ u s e r n a m e , $ p a s s w o r d ) ) ;         e c h o   $ s t m t - > r o w C o u n t ( ) ; } c a t c h ( P D O E x c e p t i o n   $ e ) {         e c h o   $ e - > g e t M e s s a g e ( ) ; } ? >
3 . b i n d P a r a m ( ) S Q L   a ) : u s e r n a m e     : p a s s w o r d   b ) $ u s e r n a m e ; $ p a s s w o r d c ) P D O : : P A R A M _ S T R , b i n d p a r a m ( ) i n t P D O : : P A R A M _ I N T . P D O S Q L $ s q l = ' s e l e c t   *   f r o m   u s e r   w h e r e   n a m e = : u s e r n a m e   a n d   p a s s w o r d = : p a s s w o r d ' ;         $ s t m t = $ p d o - > p r e p a r e ( $ s q l ) ;         $ s t m t - > b i n d P a r a m ( " : u s e r n a m e " , $ u s e r n a m e , P D O : : P A R A M _ S T R ) ;         $ s t m t - > b i n d P a r a m ( " : p a s s w o r d " , $ p a s s w o r d , P D O : : P A R A M _ S T R ) ; < ? p h p h e a d e r ( ' c o n t e n t - t y p e : t e x t / h t m l ; c h a r s e t = u t f - 8 ' ) ; $ u s e r n a m e = $ _ G E T [ ' u s e r n a m e ' ] ; $ p a s s w o r d = $ _ G E T T [ ' p a s s w o r d ' ] ; t r y {         $ p d o = n e w   P D O ( ' m y s q l : h o s t = l o c a l h o s t ; d b n a m e = t e s t ' , ' r o o t ' , ' r o o t ' ) ;         $ s q l = ' s e l e c t   *   f r o m   u s e r   w h e r e   n a m e = : u s e r n a m e   a n d   p a s s w o r d = : p a s s w o r d ' ;         $ s t m t = $ p d o - > p r e p a r e ( $ s q l ) ;         $ s t m t - > b i n d P a r a m ( " : u s e r n a m e " , $ u s e r n a m e , P D O : : P A R A M _ S T R ) ;         $ s t m t - > b i n d P a r a m ( " : p a s s w o r d " , $ p a s s w o r d , P D O : : P A R A M _ S T R ) ;         $ s t m t - > e x e c u t e ( ) ;         e c h o   $ s t m t - > r o w C o u n t ( ) ; } c a t c h ( P D O E x c e p t i o n   $ e ) {         e c h o   $ e - > g e t M e s s a g e ( ) ; } ? >
0 x 0 3   P D O t m d t m d . . . , P D O P D O M y s q l m y . i n i g b k P H P 使 a d d s l a s h e s ( ) P D O : : q u o t e m y s q l _ r e a l _ e s c a p e _ s t r i n g ( ) m y s q l _ e s c a p e _ s t r i n g ( ) m a g i c _ q u o t e s _ g p c = o n % d f ' P D O P D O P D O : : A T T R _ E M U L A T E _ P R E P A R E S ( t r u e ) ( f a l s e ) , t r u e P D O S Q L e x e c u t e ( ) p r e p a r e S Q L e x e c u t e ( ) P D O P D O : : A T T R _ E M U L A T E _ P R E P A R E S   / / ( P D O : : A T T R _ E R R M O D E   / /
P D O : : M Y S Q L _ A T T R _ M U L T I _ S T A T E M E N T S   / / ( ) P D O 2 . 1   $ p d o > q u e r y ( ) 便 $ s q l P D O P D O P D O : : M Y S Q L _ A T T R _ M U L T I _ S T A T E M E N T S f a l s e u n i o n < ? p h p h e a d e r ( ' c o n t e n t - t y p e = t e x t / h t m l ; c h a r s e t = u t f - 8 ' ) ; $ u s e r n a m e = $ _ G E T [ ' u s e r n a m e ' ] ; $ p a s s w o r d = $ _ G E T [ ' p a s s w o r d ' ] ; t r y {         $ p d o = n e w   P D O ( ' m y s q l : h o s t = l o c a l h o s t ; d b n a m e = t e s t ' , ' r o o t ' , ' r o o t ' ) ;         $ s q l = " s e l e c t   *   f r o m   u s e r   w h e r e   u s e r n a m e = ' { $ u s e r n a m e } '   a n d   p a s s w o r d = ' { $ p a s s w o r d } ' " ;         e c h o   $ s q l . " < / b r > " ;         $ r o w = $ p d o - > q u e r y ( $ s q l ) ;         f o r e a c h   ( $ r o w   a s   $ k e y   = >   $ v a l u e )   {                 p r i n t _ r ( $ v a l u e ) ;         } } c a t c h ( P O O E x c e p t i o n   $ e ) {         e c h o   $ e - > g e t M e s s a g e ( ) ; } n e w   P D O ( $ d s n ,   $ u s e r ,   $ p a s s ,   a r r a y ( P D O : : M Y S Q L _ A T T R _ M U L T I _ S T A T E M E N T S   = >   f a l s e ) )
2 . 2   $ r o l e i n l i n e   q u e r y 2 . 3 P D O : : A T T R _ E R R M O D E P D O : : E R R M O D E _ E X C E P T I O N P D O : : A T T R _ E M U L A T E _ P R E P A R E S - S Q L P D O < ? p h p t r y   {         $ p d o = n e w   P D O ( ' m y s q l : h o s t = l o c a l h o s t ; d b n a m e = t e s t ' , ' r o o t ' , ' r o o t ' ) ;         / / $ p d o - > s e t A t t r i b u t e ( P D O : : A T T R _ E M U L A T E _ P R E P A R E S ,   f a l s e ) ;         $ u s e r n a m e   =   $ _ G E T [ ' u s e r n a m e ' ] ;         $ s q l   =   " s e l e c t   i d , " . $ _ G E T [ ' r o l e ' ] . "   f r o m   u s e r   w h e r e   u s e r n a m e   =   ? " ;         $ s t m t   =   $ p d o - > p r e p a r e ( $ s q l ) ;         $ s t m t - > b i n d P a r a m ( 1 , $ u s e r n a m e ) ;         $ s t m t - > e x e c u t e ( ) ;         w h i l e ( $ r o w = $ s t m t - > f e t c h ( P D O : : F E T C H _ A S S O C ) )         {                 v a r _ d u m p ( $ r o w ) ;                 e c h o   " < b r > " ;         } }   c a t c h   ( P D O E x c e p t i o n   $ e )   {         e c h o   $ e ; } $ p d o - > s e t A t t r i b u t e ( P D O : : A T T R _ E R R M O D E ,   P D O : : E R R M O D E _ E X C E P T I O N ) ;
P D O     P D O E x c e p t i o n   e r r o r - b a s e d   S Q L   I n j e c t i o n 使 G T I D _ S U B S E T 2 . 4   i n l i n e   q u e r y h t t p : / / 1 9 2 . 1 6 8 . 1 . 3 / p d o . p h p ? r o l e = i d   O R   G T I D _ S U B S E T ( C O N C A T ( ( M I D ( ( I F N U L L ( C A S T ( C U R R E N T _ U S E R ( )   A S   N C H A R ) , 0 x 2 0 ) ) , 1 , 1 9 0 ) ) ) , 6 7 0 0 ) & u s e r n a m e = a d m i n & u s e r n a m e = a d m i n < ? p h p t r y   {         $ p d o = n e w   P D O ( ' m y s q l : h o s t = l o c a l h o s t ; d b n a m e = t e s t ' , ' r o o t ' , ' r o o t ' ) ;         $ p d o - > s e t A t t r i b u t e ( P D O : : A T T R _ E R R M O D E ,   P D O : : E R R M O D E _ E X C E P T I O N ) ;         $ p d o - > s e t A t t r i b u t e ( P D O : : A T T R _ E M U L A T E _ P R E P A R E S ,   f a l s e ) ;         $ u s e r n a m e   =   $ _ G E T [ ' u s e r n a m e ' ] ;         $ s q l   =   " s e l e c t   i d , " . $ _ G E T [ ' r o l e ' ] . "   f r o m   u s e r   w h e r e   u s e r n a m e   =   ? " ;         $ s t m t   =   $ p d o - > p r e p a r e ( $ s q l ) ;         $ s t m t - > b i n d P a r a m ( 1 , $ u s e r n a m e ) ;         $ s t m t - > e x e c u t e ( ) ;         w h i l e ( $ r o w = $ s t m t - > f e t c h ( P D O : : F E T C H _ A S S O C ) )         {                 v a r _ d u m p ( $ r o w ) ;                 e c h o   " < b r > " ;         } }   c a t c h   ( P D O E x c e p t i o n   $ e )   {         e c h o   $ e ; }
c a s e 便 s q l   P D O   使   r e a l   p a r e p a r e d   s t a t e m e n t s   S Q L m y s q l P H P S Q L 使 P D O c a s e   p r e p a r e ( )     e x e c u t e ( ) S Q L 0 x 0 4   - T h i n k P H P 5 P D O ( P h i t h o n ) P h i t h o n c a s e h t t p s : / / w w w . l e a v e s o n g s . c o m / P E N E T R A T I O N / t h i n k p h p 5 - i n - s q l i n j e c t i o n . h t m l i n S Q L S Q L I N $ d b h - > s e t A t t r i b u t e ( P D O : : A T T R _ E M U L A T E _ P R E P A R E S ,   f a l s e ) ;   $ p d o   =   n e w   P D O ( ' m y s q l : d b n a m e = t e s t d a t a b a s e ; h o s t = l o c a l h o s t ; c h a r s e t = u t f 8 ' ,   ' r o o t ' ,   ' r o o t ' ) ; $ p d o - > s e t A t t r i b u t e ( P D O : : A T T R _ E M U L A T E _ P R E P A R E S ,   f a l s e ) ; $ s t m t   =   $ p d o - > p r e p a r e ( ' S E L E C T   *   F R O M   w z _ a d m i n   W H E R E   i d   =   : i d ' ) ; $ s t m t - > e x e c u t e ( a r r a y ( ' i d '   = >   $ i d ) ) ; p r i n t _ r ( $ s t m t   - >   f e t c h A l l   ( ) ) ; e x i t ( ) ; < ? p h p n a m e s p a c e   a p p i n d e x c o n t r o l l e r ; u s e   a p p i n d e x m o d e l U s e r ; c l a s s   I n d e x {         p u b l i c   f u n c t i o n   i n d e x ( ) {                 $ i d s   =   i n p u t ( ' i d s / a ' ) ;                 $ t   =   n e w   U s e r ( ) ;                 $ r e s u l t   =   $ t - > w h e r e ( ' i d ' ,   ' i n ' ,   $ i d s ) - > s e l e c t ( ) ;         } } < ? p h p . . . $ b i n d N a m e   =   $ b i n d N a m e   ? :   ' w h e r e _ '   .   s t r _ r e p l a c e ( [ ' . ' ,   ' - ' ] ,   ' _ ' ,   $ f i e l d ) ; i f   ( p r e g _ m a t c h ( ' / W / ' ,   $ b i n d N a m e ) )   {         / /           $ b i n d N a m e   =   m d 5 ( $ b i n d N a m e ) ; } . . .
S Q L S Q L S Q L S Q L P D O 1 .   S Q L 2 .   v a l u e p a r a m 3 .   S Q L }   e l s e i f   ( i n _ a r r a y ( $ e x p ,   [ ' N O T   I N ' ,   ' I N ' ] ) )   {         / /   I N           i f   ( $ v a l u e   i n s t a n c e o f   C l o s u r e )   {                 $ w h e r e S t r   . =   $ k e y   .   '   '   .   $ e x p   .   '   '   .   $ t h i s - > p a r s e C l o s u r e ( $ v a l u e ) ;         }   e l s e   {                 $ v a l u e   =   i s _ a r r a y ( $ v a l u e )   ?   $ v a l u e   :   e x p l o d e ( ' , ' ,   $ v a l u e ) ;                 i f   ( a r r a y _ k e y _ e x i s t s ( $ f i e l d ,   $ b i n d s ) )   {                         $ b i n d     =   [ ] ;                         $ a r r a y   =   [ ] ;                         f o r e a c h   ( $ v a l u e   a s   $ k   = >   $ v )   {                                 i f   ( $ t h i s - > q u e r y - > i s B i n d ( $ b i n d N a m e   .   ' _ i n _ '   .   $ k ) )   {                                         $ b i n d K e y   =   $ b i n d N a m e   .   ' _ i n _ '   .   u n i q i d ( )   .   ' _ '   .   $ k ;                                 }   e l s e   {                                         $ b i n d K e y   =   $ b i n d N a m e   .   ' _ i n _ '   .   $ k ;                                 }                                 $ b i n d [ $ b i n d K e y ]   =   [ $ v ,   $ b i n d T y p e ] ;                                 $ a r r a y [ ]                 =   ' : '   .   $ b i n d K e y ;                         }                         $ t h i s - > q u e r y - > b i n d ( $ b i n d ) ;                         $ z o n e   =   i m p l o d e ( ' , ' ,   $ a r r a y ) ;                 }   e l s e   {                         $ z o n e   =   i m p l o d e ( ' , ' ,   $ t h i s - > p a r s e V a l u e ( $ v a l u e ,   $ f i e l d ) ) ;                 }                 $ w h e r e S t r   . =   $ k e y   .   '   '   .   $ e x p   .   '   ( '   .   ( e m p t y ( $ z o n e )   ?   " ' ' "   :   $ z o n e )   .   ' ) ' ;         } $ b i n d N a m e $ v a l u e $ v a l u e $ k $ b i n d N a m e p r e p a r e ( $ S Q L ) b i n d V a l u e ( $ p a r a m ,   $ v a l u e ) e x e c u t e ( ) $ p a r a m < ? p h p $ p a r a m s   =   [         P D O : : A T T R _ E R R M O D E                       = >   P D O : : E R R M O D E _ E X C E P T I O N ,
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则