Больше видео по безопасности на моём бусти www.flenov.info/plus/index Обо мне: www.flenov.ru Мой ИТ блог www.flenov.info Телеграм: t.me/mflenov Twitter: twitter.com/flenov Инстаграм: instagram.com/mflenov/ Мой просто блог blo.moe
Вы очень ярко ему сказали о своём открытии 🙂 Наверно гуманитарий также в ответ сказал бы любезности подняв уровень доброжелательности, а технарь ответил сухо. Однако это такая разница в менталитете 🙂
Если в параметре, который в запрос подставляется, пробелов не должно быть, то его через функцию удаления пробелов нужно пропустить, и уже это значение в запрос подставлять, тогда код sql-инъекции запорется. Или валидацию параметров делать, чтобы если число, то должно быть число, и с такими-то условиями.
Если ORM не используют SQL, то SQL невозможен, потому что инъекция назвается именно SQL. Но ORM могут позволять прямое использование SQL и тогде может быть инъекция
Prepared statements не панацея от начинающих программистов.... Тут только код ревью, тесты и постоянное обучение. Как насчет запроса в стиле "SELECT id, {$_GET['field_name']} FROM users WHERE email = ?;" тут вродебы и запрос параметризован, но только это не спасет. Такое и в LIMIT встречается, и ORDER, GROUP BY. Вобщем нужно следить за каждым запросом :)
Если нет исходного кода, то никак, только пробовать и смотреть на результат. Если возникнет ошибка и сервер отобразит детали, то может в этом случае можно что-то узнать.
Добрый день, Михаил! Спасибо вам за видео. Я начал изучать тему Bug Bounty и pentest. Какую вашу книгу мне стоит прочитать, чтобы узнать больше об уязвимостях например (XSS/CSRF/CSTI)
Здравствуйте. Простите, возможно, за глупый вопрос. Я только начинаю изучать программирование. Скажите, а сработает ли инъекция, если использовать preparedStatment(), но не использовать setParametr(), то есть параметры указать в самом preparetStatment(). Например так: PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO User (name, lastName, age) " + "VALUES ('" + name + "', '" + lastName + "', '" + age + "');") , где name, lastName, age - это параметры метода для сохранения user(а), внутри которого и прописан preparedStatment(). Заранее спасибо.
Т.е. из sql можно создавать файлы в файловой системе? И даже Шелл запускать? Ого, не знал. Надо поизучать эту тему. Круто было бы если вы, Михаил, сделали в будущем видео о том, как это сделать
Пришел после обреченных. Кто-нибудь может объяснить как это вообще работает в web. Ну допустим хакер смог провести injection и хочет похитить данные. Так что будет при Select * from where UserId = 1234 OR 1=1 ? У него на странице каким-то чудом появится вся таблица что ли ? Или надо прям потом настраивать linked server итд, чтобы данные скопировать на сервер хакера ?
9999 - число, которое должно быть большим, чтобы такой карточки в базе данных не было. Тогда UserID='id' AND Card='9999' ничего не вернет. В этом случае в силу вступает вторая половина фильтра ИЛИ: or UserID = 1. Мы не проверяем карточку, а фильтруем только по пользователю, а значит в результате мы получим первую карточку для UserID = 1
Посмотрел несколько роликов Михаила По всей видимости, знания автора столь обширны, что он не в состоянии систематизировать их подачу и его уроки напоминают беспоярдочный бег курицы по птичьему двору, или, по-научному, броуновкое движение. Не стоит такое смотреть дабы не забивать себе голову разрозненной информацией, куски которой поданы совершенно беспорядочно.
Больше видео по безопасности на моём бусти www.flenov.info/plus/index
Обо мне: www.flenov.ru
Мой ИТ блог www.flenov.info
Телеграм: t.me/mflenov
Twitter: twitter.com/flenov
Инстаграм: instagram.com/mflenov/
Мой просто блог blo.moe
о боже!!!я прочитал почти все ваши книги.И не подозревая кто Вы,подписался,случайно.А тут оказалось чудо чудесное...
А основной канал видел?
www.youtube.com/@programisli
Вы очень ярко ему сказали о своём открытии 🙂 Наверно гуманитарий также в ответ сказал бы любезности подняв уровень доброжелательности, а технарь ответил сухо. Однако это такая разница в менталитете 🙂
Спасибо, Михаил, теперь буду знать, что можно сделать, чтобы попытаться получить чужие карты
прочитал все книги, только щас узнал о ютубе, почему я узнал только сейчас
Спасибо Вам Михаил. Я сам сегодня ИБ шник. Все правильно говорите в ролике.
Есть опыт разработки старый. Всегда топил за продумывание рисков в коде, когда.его писал. Сегодня иду обратно с багажом ИБшника.
Если в параметре, который в запрос подставляется, пробелов не должно быть, то его через функцию удаления пробелов нужно пропустить, и уже это значение в запрос подставлять, тогда код sql-инъекции запорется. Или валидацию параметров делать, чтобы если число, то должно быть число, и с такими-то условиями.
Очень интересная тема!
Тот самый момент когда просмотрел много роликов на ютубе, и только сечас понял, что этот Фленов == тому что на книге указан в качестве автора :DDDD
Разоваровался?
А если говорить про hibernate orm, там покатят инъекции?
Если ORM не используют SQL, то SQL невозможен, потому что инъекция назвается именно SQL. Но ORM могут позволять прямое использование SQL и тогде может быть инъекция
Prepared statements не панацея от начинающих программистов.... Тут только код ревью, тесты и постоянное обучение. Как насчет запроса в стиле "SELECT id, {$_GET['field_name']} FROM users WHERE email = ?;" тут вродебы и запрос параметризован, но только это не спасет. Такое и в LIMIT встречается, и ORDER, GROUP BY. Вобщем нужно следить за каждым запросом :)
Там, где параметры невозможны, нужно фильтровать, другого выхода нет. Но если есть возможность использовать параметры, то только их.
Случайно наткнулся на твой канал. Очень классно излагаешь. Удачи!
Только сегодня случайно в библиотеке наткнулся на книгу "Web сервер - глазами хакера", пошёл смотреть на ютюбе ролики, и тут это видео, очень круто
Відразу лайк тільки по назві ;)
а как узнать какой именно куки или какие именно передаваемые данные на сервер участвуют каким-либо образом в SQL?
Если нет исходного кода, то никак, только пробовать и смотреть на результат. Если возникнет ошибка и сервер отобразит детали, то может в этом случае можно что-то узнать.
Добрый день, Михаил! Спасибо вам за видео. Я начал изучать тему Bug Bounty и pentest. Какую вашу книгу мне стоит прочитать, чтобы узнать больше об уязвимостях например (XSS/CSRF/CSTI)
В Web сервер глазами хакера я рассказывал про это. Про XSS есть видео на моем бусти, ссылки на видео есть здесь www.flenov.info/plus/video/1
@@Dev-lessons Спасибо вам большое 🤝
Здравствуйте. Простите, возможно, за глупый вопрос. Я только начинаю изучать программирование. Скажите, а сработает ли инъекция, если использовать preparedStatment(), но не использовать setParametr(), то есть параметры указать в самом preparetStatment().
Например так:
PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO User (name, lastName, age) " +
"VALUES ('" + name + "', '" + lastName + "', '" + age + "');") , где name, lastName, age - это параметры метода для сохранения user(а), внутри которого и прописан preparedStatment().
Заранее спасибо.
По сути получается, что я использую preparedStatment(), как обычный Statment()
Да, будет инъекция. Лучше так не писать код
@@Dev-lessons Принял. Спасибо.
drop from youtube ;--
Второй, это же тоже призовое место в комментариях?
Неа, даже шоколадную медальку не дадут 😂
Т.е. из sql можно создавать файлы в файловой системе? И даже Шелл запускать? Ого, не знал. Надо поизучать эту тему.
Круто было бы если вы, Михаил, сделали в будущем видео о том, как это сделать
Сам чистый SQL не может, а как я сказал некоторые базы могут позволять за счёт своих расширений, у MS это Transact: например xp_cmdshell
Пришел после обреченных. Кто-нибудь может объяснить как это вообще работает в web. Ну допустим хакер смог провести injection и хочет похитить данные. Так что будет при Select * from where UserId = 1234 OR 1=1 ? У него на странице каким-то чудом появится вся таблица что ли ?
Или надо прям потом настраивать linked server итд, чтобы данные скопировать на сервер хакера ?
Именно этот пример не для воровства данных, а для обхода авторизации. Воровство данных будет в отдельном видео
@@Dev-lessons Как чисто SQL разрабу будет интересно посмотреть как можно шкодить без языка програмирования )
Извините, непонятный момент на 6:35, каким образом хакер может получить доступ к карточкам других пользователей?
9999 - число, которое должно быть большим, чтобы такой карточки в базе данных не было. Тогда UserID='id' AND Card='9999' ничего не вернет.
В этом случае в силу вступает вторая половина фильтра ИЛИ:
or UserID = 1. Мы не проверяем карточку, а фильтруем только по пользователю, а значит в результате мы получим первую карточку для UserID = 1
@@Dev-lessonsСпасибо вам большое
Первый!!!
Посмотрел несколько роликов Михаила
По всей видимости, знания автора столь обширны, что он не в состоянии систематизировать их подачу и его уроки напоминают беспоярдочный бег курицы по птичьему двору, или, по-научному, броуновкое движение.
Не стоит такое смотреть дабы не забивать себе голову разрозненной информацией, куски которой поданы совершенно беспорядочно.
Спасибо за отзыв
Зависть пошла)
Бывает
Полная дичь .не інформативно . Просто треп.
Главное, что комментарий отличный, спасибки
Мне не интересна твоя жизненая история . Слишком много воды.
Ну тогда не стоит смотреть меня, у меня во всех видео много личного опыта, историй
@@Dev-lessons Уговорил, больше смотреть не буду.