а мог бы и спасибо сказать
Медвежья услуга
ибо нехуй
Так он же ему комплимент и сделал, пидорас.
“; drop table users
“; drop table users;“; drop table users;“; drop table users;“; drop table users;“; drop table users;“; drop table users;“; drop table users;“; drop table users;
Так
Ща буду фиксить твою хуйню
пидорас
Приветствую.
Команда /help Вам подскажет,
что нужно делать.
Команда /config для настройки
меня.
Не забудьте выдать мне
доступ к переписке.
(Если вы в беседе)
Команда /help Вам подскажет,
что нужно делать.
Команда /config для настройки
меня.
Не забудьте выдать мне
доступ к переписке.
(Если вы в беседе)
А я помогу проверить переводы банковский карт. Сообщите номер карты, срок годности и CCV код, при приходе смс уведомлений с кодами доступа пишите из сюда.
А, да, да, я бот, пиши /хелп ёпта.
А, да, да, я бот, пиши /хелп ёпта.
/хелп ёпта
/йоба это ты
Патрик, с вашей карты был совершен перевод...
Разве SQL инъекции хоть где-то ещё работают?
Да.
с возрастающей популярностью и доступностью легкого програмированния даже чаще чем раньше
когда-то это победили и забыли, но древнее зло не дремлет
когда-то это победили и забыли, но древнее зло не дремлет
Значит во всём виноваты "программисты за две недели". А я подозревал, что ничего хорошего из этого не выйдет...
В любой рекламе курсов по программированию для школьников и не только щас есть волшебная фраза "Вы напишете своего телеграм-бота". Вот и результат
Мне вот интересно, а зачем было писать второй раз drop table... овер9000 раз. Если инъекции проходят, то таблица должна была дропнуться с первого раза, если нет, то там хоть упишись, команда не отработает
Он же с разным синтаксисом писал это, вдруг какая-нибудь команда и прокатит.
хм, или я в глаза долблюсь или там синтаксис одинаковый
Ненуаче, бот есть? Есть! Работает? Работает! Про секурность никто не говорил
Менеджер проекта, залогиньтесь.
С паршивой овцы хоть шерсти клок
Они что, без фреймворков или sdk кодят? Это же ещё сложнее, какие-то странные начинающие программисты.
orm не спасает от говнокодинга в виде "where" + значение.tostring
При обращении к бд через фреймворк идёт экранирование. А sdk бывает сами эскейпят строки через \ после получения.
1) фреймворк ещё освоить и подключит надо.
2) даже с фреймворками, к сожалению, когда надо сделать что-то нестандартное, часто переходят на сырой sql. Но тут не тот случай, конечно
2) даже с фреймворками, к сожалению, когда надо сделать что-то нестандартное, часто переходят на сырой sql. Но тут не тот случай, конечно
ну мне например к 15-летнему опыту эникей+инженер+dba вот пару месяцев назад пришлось освоить жаваскрипт. я пишу в обычном редакторе Visual Studio Code, потому что нихуя не знаю про фреймворки и sdk, а гугл выдает их так много, что теряюсь.
Так vs code заебись для js/ts, webstorm пожалуй получше но он платный
отдельный привет Акуле и его маме
;" drop table users; ДА
Они до сих пор в OWASP топовые места занимают. А чего ты хотел, если IT раздувается с космической скорость, а про качество никто не парится? Сейчас в прогеры порог вхождения - умение писать и читать. Недавно хрюшка привела "умного мальчика-зайчика-знакомого-таксиста-хочет-вкатиться-в-IT" у которого бек 2 курсика по спрингу c udemy, в фоне наверное шел, пока это чудовище в танчики играло. Тип возьмите научите....
... а за это мы вам премию х4 сделаем!
Но в этом месяце мы вам ее не планировали выплачивать, но зато x4
Ладно бы ещё инъекции, это программирование и мозг нужен, но вот не настроить у ботовского юзера БД права, оставив полный админский доступ абсолютно ко всем командам и таблицам... Уж хотя бы это стоило ограничить! (тогда б инъекция тоже не отработала)
В таких проектах обычно не думают дальше кода, так что на настройку окружения всем насрать, главное в гит выложить для портфолио.
Пффф.... как раз по этому поводу редко парятся и подключаются исключительно через sa.
Я не понял что в посте
Её дочь зовут "Помогите! Меня заставляют подделывать паспорта".
использовать препаред стейтментс надо
* на последнем спрайте кружку заменили бутылкой
* на последнем спрайте кружку заменили бутылкой
TABLICE
POLICE, DROP TABLICE!
Походу это он разрабатывал инфру штрафов ГИБДД.
Hачинается демонстрация нового компьютера, управляемого голосом. Изобретатель просит зал соблюдать тишину.
Только он открывает рот, из зала крик: - FORMAT C:!!! ENTER!!! ENTER!!!
компьютер отвечает
bash: format: command not found...
Только он открывает рот, из зала крик: - FORMAT C:!!! ENTER!!! ENTER!!!
компьютер отвечает
bash: format: command not found...
Эрэм эрэф, сучка.
Казалось бы, при чем тут Россия ? :)
rm -rf /
вообще то. и с года так 2013 не сработает, так как попросит подтверждение
вообще то. и с года так 2013 не сработает, так как попросит подтверждение
Так -f же как раз, чтобы не просить.
но именно для этой сделали исключение
оно десять раз переспросит и откажет из-за отсутствия прав у админа
оно десять раз переспросит и откажет из-за отсутствия прав у админа
Вот содомиты, я же полезу проверить на виртуалке - а оно не спросит, потому что вы прикалывались надо мной!)
Потому что надо /*, чтобы пролетать мимо всех проверок
И no preserve root еще
а вот с этим сразу убьёт всё
/* не включает в себя корень, так что не нужно.
Была уже история с нестандартными номерами. Кратко: чел решил натянуть систему и заказал номер NULL для своего авто, но в результате - ему прилетали все штрафы автомобилей, где номер был по каким-то причинам не указан (в таблицах SQL значение "не определено" указывается как раз как NULL).
И эта история скорее всего пиздёж, ибо "NULL" и NULL это разные вещи, а в SQL так и вообще NULL всегда не равен NULL.
Может, у них бэк на яваскрипте был? :)
Увы нет. Какие-то чудо пограмисты хранили NULL как строку.
так то null это вообще неопределенность.
т.е. считается, что на выходе неизветно, есть ли вообще значение или нет.
т.е. считается, что на выходе неизветно, есть ли вообще значение или нет.
Поясните прикол для непрограмистов?
Заходит как-то тестировщик в столовую, ну тут и понеслось
День первый
Хакер приходит в общественную столовую и с возмущением обнаруживает, что солонку на столе может открутить кто попало и насыпать туда что угодно. Хакер приходит домой и пишет гневное письмо директору столовой: "Я, meG@Duc, обнаружил уязвимость солонки в Вашей столовой. Злоумышленник может вскрыть солонку и насыпать туда яду! Примите меры срочно!"
День второй
Директор среди прочих деловых писем, запросов о поставках еды и курьерских уведомлений получает письмо, и пожимает плечами: "Кому этот бред только в голову пришёл?"
День пятый
Хакер приходит в столовую, насыпает во все солонки яду. Погибает триста человек, директора три месяца таскают по судам и, в конце концов, оправдывают за отсутствием состава преступления. Хакер пишет письмо в стиле "ну что, видали?".
День 96-ой
Директор покупает специально спроектированные солонки с кодовым замком. Посетители столовой чувствуют, что они в этой жизни чего-то не понимают.
Хакер приходит в общественную столовую и с возмущением обнаруживает, что солонку на столе может открутить кто попало и насыпать туда что угодно. Хакер приходит домой и пишет гневное письмо директору столовой: "Я, meG@Duc, обнаружил уязвимость солонки в Вашей столовой. Злоумышленник может вскрыть солонку и насыпать туда яду! Примите меры срочно!"
День второй
Директор среди прочих деловых писем, запросов о поставках еды и курьерских уведомлений получает письмо, и пожимает плечами: "Кому этот бред только в голову пришёл?"
День пятый
Хакер приходит в столовую, насыпает во все солонки яду. Погибает триста человек, директора три месяца таскают по судам и, в конце концов, оправдывают за отсутствием состава преступления. Хакер пишет письмо в стиле "ну что, видали?".
День 96-ой
Директор покупает специально спроектированные солонки с кодовым замком. Посетители столовой чувствуют, что они в этой жизни чего-то не понимают.
Эй ну охота же фулл версию почитать (
День первый
Хакер приходит в общественную столовую и с возмущением обнаруживает, что солонку на столе может открутить кто попало и насыпать туда что угодно. Хакер приходит домой и пишет гневное письмо директору столовой: "Я, meG@Duc, обнаружил уязвимость солонки в Вашей столовой. Злоумышленник может вскрыть солонку и насыпать туда яду! Примите меры срочно!"
День второй
Директор среди прочих деловых писем, запросов о поставках еды и курьерских уведомлений получает письмо, и пожимает плечами: "Кому этот бред только в голову пришёл?"
День пятый
Хакер приходит в столовую, насыпает во все солонки яду. Погибает триста человек, директора три месяца таскают по судам и, в конце концов, оправдывают за отсутствием состава преступления. Хакер пишет письмо в стиле "ну что, видали?".
День 96-ой
Директор покупает специально спроектированные солонки с кодовым замком. Посетители столовой чувствуют, что они в этой жизни чего-то не понимают.
День 97-ой
Хакер обнаруживает, что дырки в солонках пропускают соль в обе стороны. И не только соль, а вообще всё, что угодно. Он пишет возмущенное письмо директору и ссыт во все солонки столовой. Триста человек перестают посещать эту столовую вообще, тридцать попадают в больницы с отравлением. Хакер вдогонку посылает директору смс-ку "Ну как вам?". Директора тем временем три месяца таскают по судам и дают год условно.
День 188-ой
Директор столовой клянется в жизни больше не работать ни в одной столовой, а тихо-мирно грузить лес в Сибири. Инженеры работают над новой солонкой с односторонним клапаном. Официантки тем временем изымают все старые солонки и раздают соль вручную.
День 190-ый
Хакер тырит солонку из столовой и изучает дома её устройство. Пишет гневное письмо директору: "Я, meG@Duc, стырил солонку и нахожу этот факт возмутительным! Любой может стырить солонку из Вашей столовой!" До этого непьющий директор читает письмо, идет домой и выпивает водки.
День 193-ый
Хакер обнаруживает, что все солонки в столовой прибиты цепями к столам. Он приезжает на очередной хакерский СПРЫГ и докладывает о своих успехах, получая там заслуженную награду за защиту интересов общества и потребителя. К счастью, директор ничего про это не знает и не сопьется раньше времени.
День 194-ый
В рамках дьявольски гениально продуманной операции хакеры всем СПРЫГом вламываются в столовую и высыпают соль из всех солонок себе в карманы. Хакер meG@Duc пишет возмущенное письмо директору, намекая на то, что никакой заботы о посетителях в столовой нет и любой гад может лишить честных людей соли в одно мгновение. Дозатор соли с авторизацией необходим просто позарез.
Инженеры в поте лица работают над новой солонкой, пока официантки опять раздают соль вручную. Директор уезжает в отпуск на Сейшельские острова и обедает только в номере, избегая столовых, ресторанов и баров.
День 200-ый
Посетители столовой с ужасом находят, что, чтобы насыпать соли, они должны подойти к официанту, предьявить паспорт, получить специальный 8-значный одноразовый код к солонке. Для получения перца процедуру следует повторить.
Хакер приходит в общественную столовую и с возмущением обнаруживает, что солонку на столе может открутить кто попало и насыпать туда что угодно. Хакер приходит домой и пишет гневное письмо директору столовой: "Я, meG@Duc, обнаружил уязвимость солонки в Вашей столовой. Злоумышленник может вскрыть солонку и насыпать туда яду! Примите меры срочно!"
День второй
Директор среди прочих деловых писем, запросов о поставках еды и курьерских уведомлений получает письмо, и пожимает плечами: "Кому этот бред только в голову пришёл?"
День пятый
Хакер приходит в столовую, насыпает во все солонки яду. Погибает триста человек, директора три месяца таскают по судам и, в конце концов, оправдывают за отсутствием состава преступления. Хакер пишет письмо в стиле "ну что, видали?".
День 96-ой
Директор покупает специально спроектированные солонки с кодовым замком. Посетители столовой чувствуют, что они в этой жизни чего-то не понимают.
День 97-ой
Хакер обнаруживает, что дырки в солонках пропускают соль в обе стороны. И не только соль, а вообще всё, что угодно. Он пишет возмущенное письмо директору и ссыт во все солонки столовой. Триста человек перестают посещать эту столовую вообще, тридцать попадают в больницы с отравлением. Хакер вдогонку посылает директору смс-ку "Ну как вам?". Директора тем временем три месяца таскают по судам и дают год условно.
День 188-ой
Директор столовой клянется в жизни больше не работать ни в одной столовой, а тихо-мирно грузить лес в Сибири. Инженеры работают над новой солонкой с односторонним клапаном. Официантки тем временем изымают все старые солонки и раздают соль вручную.
День 190-ый
Хакер тырит солонку из столовой и изучает дома её устройство. Пишет гневное письмо директору: "Я, meG@Duc, стырил солонку и нахожу этот факт возмутительным! Любой может стырить солонку из Вашей столовой!" До этого непьющий директор читает письмо, идет домой и выпивает водки.
День 193-ый
Хакер обнаруживает, что все солонки в столовой прибиты цепями к столам. Он приезжает на очередной хакерский СПРЫГ и докладывает о своих успехах, получая там заслуженную награду за защиту интересов общества и потребителя. К счастью, директор ничего про это не знает и не сопьется раньше времени.
День 194-ый
В рамках дьявольски гениально продуманной операции хакеры всем СПРЫГом вламываются в столовую и высыпают соль из всех солонок себе в карманы. Хакер meG@Duc пишет возмущенное письмо директору, намекая на то, что никакой заботы о посетителях в столовой нет и любой гад может лишить честных людей соли в одно мгновение. Дозатор соли с авторизацией необходим просто позарез.
Инженеры в поте лица работают над новой солонкой, пока официантки опять раздают соль вручную. Директор уезжает в отпуск на Сейшельские острова и обедает только в номере, избегая столовых, ресторанов и баров.
День 200-ый
Посетители столовой с ужасом находят, что, чтобы насыпать соли, они должны подойти к официанту, предьявить паспорт, получить специальный 8-значный одноразовый код к солонке. Для получения перца процедуру следует повторить.
+1
“; якобы закрывает твое сообщение и drop table users идёт не как текст, а как команда для базы данных которая должна удалить таблицу с пользователями. Если нет экранирования то эта хуйня даже работает но синтаксис другой нужно.
[rzn_zippy]: Вот как ты думаешь что делает запрос DROP TABLE?
[saruyosih]: Бросает стол?
[saruyosih]: Бросает стол?
Если обработка запроса выполнена рукожопой обезьяной, то в строку можно специальные символы и в результате сервер при обработке обычной строки выполняет еще и скрипт который в запрос добавили (называется иньекция кода, в данном случае ожидается, что скрипт выполнится СУБД, но можно и другие обработчики цепануть) - тут он обнуляет в бд таблицу юзеров, но по реакции бота однозначно не сказать, что успешно, скорее бот просто тупой и на любой некорректный запрос выдает одну и ту же фразу.
Давай я попробую. Когда вводится сообщение, есть вероятность, что вносят в базу данных SQL (MySQL, PоstgreSQL или еще какую-то). Команда очень образно имеет вид:
INSERT INTO mesages set message = $text where id = '2';
где вместо переменной $text используется текст, который ты ввел в чате.
так вот чувак выше вместо текста вписал свою SQL команду. Первая точка с запятой какбы завершает выполнение текущей команда, потом выполняется то, что ввел он. Опять же очень образно выходит что-то типа такого
INSERT INTO mesages set message = ; drop table users; where id = '2';
таким образом база данных тут видит три команды
INSERT INTO mesages set message = ;
drop table users;
where id = '2';
Первая и третья вызывают ошибку и не отрабатывают, а вот вторая удаляет таблицу users, где, как понятно из названия должны храниться данные по пользователям
INSERT INTO mesages set message = $text where id = '2';
где вместо переменной $text используется текст, который ты ввел в чате.
так вот чувак выше вместо текста вписал свою SQL команду. Первая точка с запятой какбы завершает выполнение текущей команда, потом выполняется то, что ввел он. Опять же очень образно выходит что-то типа такого
INSERT INTO mesages set message = ; drop table users; where id = '2';
таким образом база данных тут видит три команды
INSERT INTO mesages set message = ;
drop table users;
where id = '2';
Первая и третья вызывают ошибку и не отрабатывают, а вот вторая удаляет таблицу users, где, как понятно из названия должны храниться данные по пользователям
Норм ты для не-программистов объяснил :D
ага, только на практике обычно нужно чтобы первая и третья команды тоже выполнились, иначе рухнет всё и не выполнится ничего.
нет.
MariaDB [db]> select * from test_table;
Empty set (0.00 sec)
MariaDB [db]> INSERT INTO mesages set message = ; drop table test_table; where id = '2';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1
Query OK, 0 rows affected (0.00 sec)
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'where id = '2'' at line 1
MariaDB [db]> select * from test_table;
ERROR 1146 (42S02): Table 'db.test_table' doesn't exist
MariaDB [db]> select * from test_table;
Empty set (0.00 sec)
MariaDB [db]> INSERT INTO mesages set message = ; drop table test_table; where id = '2';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1
Query OK, 0 rows affected (0.00 sec)
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'where id = '2'' at line 1
MariaDB [db]> select * from test_table;
ERROR 1146 (42S02): Table 'db.test_table' doesn't exist
если в учебнике прочитать главу про доступ к базе данных и написать чат-бот, то этот бот будет уязвим к так называемым SQL-иньекциям (SQL - язык запросов к базе данных). Написав определённую комбинацию символов типа указанных выше "; - хакер закрывает выполнение текущей команды и посылает новую команду drop table user, которая удаляет таблицу user в базе данных.
представь автоответчик с голосовым управлением: прослушиваешь записи и в конце говоришь ему - "очисти кассету".
чтобы защититься от SQL-инъекций необходимо получаемые от юзера строки текста прогонять через функции, которые заменяют небезопасные символы на коды типа " => %22 (URI Encode), и только после этого записывать эти строки в базу данных - тогда будет безопасно. При считывании данных с базы применяется обратная функция, которая заменяет все %22 на " (URI Decode). Есть и другие способы защититься, другие функции.
представь автоответчик с голосовым управлением: прослушиваешь записи и в конце говоришь ему - "очисти кассету".
чтобы защититься от SQL-инъекций необходимо получаемые от юзера строки текста прогонять через функции, которые заменяют небезопасные символы на коды типа " => %22 (URI Encode), и только после этого записывать эти строки в базу данных - тогда будет безопасно. При считывании данных с базы применяется обратная функция, которая заменяет все %22 на " (URI Decode). Есть и другие способы защититься, другие функции.
Ещё помогает ограничение длины строки
Это уже от переполнения буфера. Для ботов редко актуально.
и использование не-SQL баз данных, чтобы саму суть проблемы исключить сразу.
ты не сможешь заставить сервер выполнить DROP TABLE если его нет!
ты не сможешь заставить сервер выполнить DROP TABLE если его нет!
не всегда есть такие возможности
Есть ПО в том числе чат боты, которое собирает данные в табличку или помогает кожанным мешкам узнавать инфу. Что помогает узнавать инфу - автоответчики, говорилки, консультанты - работают по заполненной базе данных "вопрос-ответ", естественно база хоть как-то настроена и подредактирована к уже имеющимся стандартным ответам. такое По должно воспринимать инфу как она есть - т.е. набор букв и цифров которые надо запомнить в табличку или при совпадении с чем-то дать зацпленный на них ответ. Но если руки из жопы у тех, кто это ПО вводил во взаимодействие с потребителем, то в нем не закрывают ввод служебных команд, это значит ПО воспинимает ввоб символов как команду которую нужно исполнить (например затереть к хуям собачьим свою базу ответов или внесенных данных), вместо того, что-бы воспринять её как какую-то биллиберду на которую нет ответа в базе.
Ох ебать ты, сука, умный! Две премии Тьюринга это джентльмену! Вот же дибилы уже 50 лет не догадались, а он сразу в корень зрит. Боже, в какой же глубокой жопе человечество с такими комментаторами
Я же сказал - простейшей! Я не говорил что не нужно фильтровать то что приходит от пользователя, экранировать всё и всё, лишать прав на дроп и делит те сервисы которым это не нужно, и вообще, использовать ОРМ и всё остальное что это самое человечество придумало для защиты от инъекций.
вообще то это хороший тон - не использовать в именах объектов угадываемые слова.
это поможет защититься от сложно-отслеживаемых багов.
например, в базе может быть несколько проектов, и в каждом проекте есть users.
и при определенных условиях можно ничего не подозревая работать с чужой таблицей users
это поможет защититься от сложно-отслеживаемых багов.
например, в базе может быть несколько проектов, и в каждом проекте есть users.
и при определенных условиях можно ничего не подозревая работать с чужой таблицей users
спасибо, я в курсе. такое возможно только если ты разрабатываешь ПО с нуля. а если пишешь под уже готовое что-то? например плагин под, будь он не ладен, вордпрес, где структуре базы сто лет в обед. все имена таблиц известны, все имена колонок известны, как и их типы. а вот префикс можно и в конфиге задать. и пойди, попробуй его угадай снаружи. если серверный код не настолько всратый что вернёт тебе результат SHOW TABLES или селекта по служебным таблицам
какой только херни люди не придумают, лишь бы по-человечески права не настраивать! и не санировать ввод
Уязвимость к SQL иньекции, кроме малого исключения - слепой , позволит атакующему вытащить метаданные (что собственно первым делом сделает любой атакующий) и ему будет глубоко насрать на то, как ты называл таблицы. Ты бы это знал если бы хоть раз в глаза видел как выполняется атака, а не пошел загуглить и выдать еще большую херь. Долбоебы не меняются
Вот и молодец, что потер сообщения. Если не имеешь даже базового представление о теме - не лезь спорить.
я потёр потому что понял что ничего путного ты всё равно не ответишь (и ты не ответил), а потому дальнейший спор с тобой не имеет смысла
Молодец, правильное решение
Только вот меня смущает одна вещь, типикал курс "напишем тг бота с нуля за 30 минут" обычно делается через свич кейс, где просто обрабатывается сообщение, непонятно как сообщение автора вообще дошло до бд(а зачастую там и без "/" бот его даже не читает)
Вопрос к хакерам. У меня на сайте какой-то вежливый пидор каждый раз с новым ником типа "Andreassnt" оставляет комент "Удалите, пожалуйста!". Это при условии что коменты проходят ручную модерацию. На хрена он это делает? (Я серьезно, реальный случай)
возможно, его пугает слово "пожалуйста" и он хочет, чтобы это слово было удалено
у меня в вордпрессе оставляют комменты из 10 рандомных латинских букв разного регистра. по 2-3 коммента за 1-2 дня, потом неделю - ничего. комменты тоже на ручной модерации (собственно, пока небыло ни одного коммента, они не сильно нужны).
так же подбиральщиков пароля админа много, по 2-3 в день, сначала спамили почту сообщениями от вордпресса, я уменьшил лимит до 1 ошибочного ввода пароля с блокировкой IP на 24 часа. Каждый попробует 1-2 раза сменить IP, чуть потыкается и бросает.
так же подбиральщиков пароля админа много, по 2-3 в день, сначала спамили почту сообщениями от вордпресса, я уменьшил лимит до 1 ошибочного ввода пароля с блокировкой IP на 24 часа. Каждый попробует 1-2 раза сменить IP, чуть потыкается и бросает.
А можно ведь просто не использовать стандартное название таблицы users, а усложнить хоть до уровня tlgusers, ведь вся суть в том, что хацкер только предполагает, что есть такая таблица с конкретно таким именем и пытается ее удалить, предполагая, что инъекция пройдет.
Чтобы написать коммент, необходимо залогиниться
Отличный комментарий!