ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

13.06.2009, 01:45
|
|
Постоянный
Регистрация: 06.02.2008
Сообщений: 494
Провел на форуме: 1754802
Репутация:
380
|
|
Сообщение от ?maybe
вы неверно уловили суть проблемы, во
1-ых. по за-альяс'иным колонкам сортирует только груп, который находится в строке с inj.(%23)
Не согласен, при UNION по альясным колонкам в MySQL 5 нужно сортировать ТОЛЬКО ORDER http://dev.mysql.com/doc/refman/5.1/en/union.html:
Also, if a column to be sorted is aliased, the ORDER BY clause must refer to the alias, not the column name. The first of the following statements will work, but the second will fail with an Unknown column 'a' in 'order clause' error
конкретно здесь работать не будет, потому что поля в ордербае задаются в виде имя_табл.колонка (что не катит в двойных запросах)
Конкретно ни где это работать не будет(если продемострируете работоспобный запрос для 5 версии MySQL то я буду только рад этому) изходя из первого условия для UNION,ORDER BY и MySQL 5. Согласен с of ORDER BY cannot use column references that include a table name но я и не утверждал что это не так. Ваш запрос такой же не работоспособный был бы если в ORDER сортировался просто по именни колонки без table name.
+Боюсь предположить что это при определеных условиях вызовет - #1222 - The used SELECT statements have a different number of columns
|
|
|

13.06.2009, 02:56
|
|
Новичок
Регистрация: 08.06.2009
Сообщений: 4
Провел на форуме: 7573
Репутация:
6
|
|
Не согласен, при UNION по альясным колонкам в MySQL 5 нужно сортировать ТОЛЬКО ORDER
я говорил про этот запрос, а не образно)
=>2
select columns.*,1,2/*или сколько там*/ from columns order by columns.column_name
select columns.*,1,2 from columns union select tables.* from tables order by columns.column_name
select columns.*,1,2 from columns union select tables.* from tables order by column_name
+Боюсь предположить что это при определеных условиях вызовет
например?)
|
|
|

13.06.2009, 05:08
|
|
Постоянный
Регистрация: 06.02.2008
Сообщений: 494
Провел на форуме: 1754802
Репутация:
380
|
|
Сообщение от ?maybe
я говорил про этот запрос, а не образно)
Мдя, а в 1 своем посте я не про это писал(как тогда воспринимать ваши заявления,и понт было это отписывать не пойму, это типа того у кого больше яйца)?
Сообщение от ?maybe
select columns.*,1,2 from columns union select tables.* from tables order by columns.column_name
К чему это? Мало того что вы сами описали почему это не работает, разговор то идет про альяс в первом запросе и про иньект до ордер по названию колонки в оригинале и версию MySQL 5.(e.g. select table_name as lol, table_schema as lol2 from columns
where column_name='user' [sql_injection] order by table_name)
Например если кодер поймет что ему не надо все значения из columns:
select 3,1,2 from columns union select tables.* from tables order by column_name
З.Ы. Давайте закончим эту пустой спор, ничего нового я не узнал и из того что вы написали, равно как и вы от того что написал я, если с чем то не согласны и хотите обсудить, для этого есть ПМ.
Последний раз редактировалось PaCo; 13.06.2009 в 05:24..
|
|
|

13.06.2009, 11:16
|
|
Новичок
Регистрация: 08.06.2009
Сообщений: 4
Провел на форуме: 7573
Репутация:
6
|
|
приведёный пример никак не связан с этой скулей, что касается 3,1,2 - из этой же области: таблица cats.* не везде существует, админ пролил пиво на системник, ...; мой пост был не понтом, а замечанием, что inj в общем случае возможна.
|
|
|

13.06.2009, 17:51
|
|
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме: 6075534
Репутация:
2731
|
|
PHP код:
if (strpos($clean, 'union') !== false && preg_match('~(^|[^a-z])union($|[^[a-z])~s', $clean) != 0)
$fail = true;
Можно ли (если да, то как?) обойти такую фильтрацию?
|
|
|

13.06.2009, 17:54
|
|
Познавший АНТИЧАТ
Регистрация: 10.06.2006
Сообщений: 1,113
Провел на форуме: 17668503
Репутация:
5826
|
|
strpos() чувствителен к регистру UNION он не заметит.
А вот со stripos() такое не прокатит.
P.S. да и регулярка тоже чувствительна к регистру без i, т.е. они тоже проглотит UNION и ничего не заметит.
Последний раз редактировалось Grey; 13.06.2009 в 18:04..
|
|
|

13.06.2009, 18:04
|
|
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме: 6075534
Репутация:
2731
|
|
Да, но вся проблема в том, что переменная $clean изначально переводиться в нижний регистр (забыл упомянуть об этом в предыдущем посте).
Последний раз редактировалось mailbrush; 13.06.2009 в 18:07..
|
|
|

13.06.2009, 18:10
|
|
Познавший АНТИЧАТ
Регистрация: 10.06.2006
Сообщений: 1,113
Провел на форуме: 17668503
Репутация:
5826
|
|
Сообщение от mailbrush
Да, но вся проблема в том, что переменная $clean изначально переводиться в нижний регистр (забыл упомянуть об этом в предыдущем посте).
Тогда хрен что сделаешь, правда без union`a прожить можно - ведь можно и посимвольно инъекцию заюзать.
|
|
|

13.06.2009, 18:15
|
|
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме: 6075534
Репутация:
2731
|
|
Grey, ага, только трабла в том, что селект фильтрует, тобишь посимвольный вывод даных из бд (кроме информации о ней) тоже не катит.
PHP код:
// Sub selects? We don't use those either.
elseif (preg_match('~\([^)]*?select~s', $clean) != 0)
$fail = true;
Плюс еще к всему этому он фильтрует < и >, т.е. подбирать придется по очереди через =.
Сама уязвимость, если кому интересно
Код:
http://forum.antichat.ru/showpost.php?p=1328827&postcount=40
|
|
|

13.06.2009, 18:23
|
|
Познавший АНТИЧАТ
Регистрация: 10.06.2006
Сообщений: 1,113
Провел на форуме: 17668503
Репутация:
5826
|
|
А эта регулярка уже кривая:
and (/*)*/select substring(version(),1))=4 - такое она пропустит
А что касается фильтрации < > - то можно юзать:
WHERE IN (0, 255) - по сути (вернее по скорости) тоже самое, что если юзать < >
Последний раз редактировалось Grey; 13.06.2009 в 18:46..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|