SQL Injection - теория и примеры

แชร์
ฝัง
  • เผยแพร่เมื่อ 20 ต.ค. 2024
  • Поддержать меня: boosty.to/mflenov
    В прошлом видео я поспешил рассказать и показать SQL Injection на практике, а в этом видео я хочу сделать шаг назад и поговорить чуть больше о теории и больше рассмотреть небольших примеров.
    Список моих книг: www.flenov.inf...
    Обо мне: www.flenov.ru
    Мой ИТ блог www.flenov.ru и www.flenov.info
    Мой просто блог blo.moe
    Twitter: / flenov
    Инстаграмм: / mflenov
    Телеграмм: t.me/mflenov

ความคิดเห็น • 49

  • @Dev-lessons
    @Dev-lessons  8 หลายเดือนก่อน

    Поддержать меня на Бусти и получить доступ к доп контенту: boosty.to/mflenov
    Обо мне: www.flenov.ru
    Мой ИТ блог www.flenov.info
    Телеграм: t.me/mflenov
    Twitter: twitter.com/flenov
    Инстаграм: instagram.com/mflenov/
    Мой просто блог blo.moe

  • @ruslans3317
    @ruslans3317 ปีที่แล้ว +17

    о боже!!!я прочитал почти все ваши книги.И не подозревая кто Вы,подписался,случайно.А тут оказалось чудо чудесное...

    • @Dev-lessons
      @Dev-lessons  ปีที่แล้ว +1

      А основной канал видел?
      www.youtube.com/@programisli

    • @akm_rpg_xakep
      @akm_rpg_xakep ปีที่แล้ว +1

      Вы очень ярко ему сказали о своём открытии 🙂 Наверно гуманитарий также в ответ сказал бы любезности подняв уровень доброжелательности, а технарь ответил сухо. Однако это такая разница в менталитете 🙂

  • @sitnikovroman
    @sitnikovroman 2 ปีที่แล้ว +9

    Спасибо Вам Михаил. Я сам сегодня ИБ шник. Все правильно говорите в ролике.

    • @sitnikovroman
      @sitnikovroman 2 ปีที่แล้ว +3

      Есть опыт разработки старый. Всегда топил за продумывание рисков в коде, когда.его писал. Сегодня иду обратно с багажом ИБшника.

  • @lukalux5529
    @lukalux5529 27 วันที่ผ่านมา +1

    прочитал все книги, только щас узнал о ютубе, почему я узнал только сейчас

  • @sim9797
    @sim9797 ปีที่แล้ว +6

    Спасибо, Михаил, теперь буду знать, что можно сделать, чтобы попытаться получить чужие карты

  • @user-danunahui
    @user-danunahui 6 หลายเดือนก่อน +1

    А если говорить про hibernate orm, там покатят инъекции?

    • @Dev-lessons
      @Dev-lessons  6 หลายเดือนก่อน

      Если ORM не используют SQL, то SQL невозможен, потому что инъекция назвается именно SQL. Но ORM могут позволять прямое использование SQL и тогде может быть инъекция

  • @TbIPDblM
    @TbIPDblM ปีที่แล้ว +2

    Тот самый момент когда просмотрел много роликов на ютубе, и только сечас понял, что этот Фленов == тому что на книге указан в качестве автора :DDDD

    • @Dev-lessons
      @Dev-lessons  ปีที่แล้ว

      Разоваровался?

  • @evgenyjagushinsky6695
    @evgenyjagushinsky6695 ปีที่แล้ว +1

    Очень интересная тема!

  • @TheKovalAndrey
    @TheKovalAndrey 2 ปีที่แล้ว +5

    Случайно наткнулся на твой канал. Очень классно излагаешь. Удачи!

  • @IvanPetrov-td6dk
    @IvanPetrov-td6dk 8 หลายเดือนก่อน

    Если в параметре, который в запрос подставляется, пробелов не должно быть, то его через функцию удаления пробелов нужно пропустить, и уже это значение в запрос подставлять, тогда код sql-инъекции запорется. Или валидацию параметров делать, чтобы если число, то должно быть число, и с такими-то условиями.

  • @eugenemaiorov8147
    @eugenemaiorov8147 2 ปีที่แล้ว +4

    Prepared statements не панацея от начинающих программистов.... Тут только код ревью, тесты и постоянное обучение. Как насчет запроса в стиле "SELECT id, {$_GET['field_name']} FROM users WHERE email = ?;" тут вродебы и запрос параметризован, но только это не спасет. Такое и в LIMIT встречается, и ORDER, GROUP BY. Вобщем нужно следить за каждым запросом :)

    • @Dev-lessons
      @Dev-lessons  2 ปีที่แล้ว

      Там, где параметры невозможны, нужно фильтровать, другого выхода нет. Но если есть возможность использовать параметры, то только их.

  • @KolomiecSergeyK
    @KolomiecSergeyK 2 ปีที่แล้ว +1

    Відразу лайк тільки по назві ;)

  • @rageman1867
    @rageman1867 ปีที่แล้ว +2

    Добрый день, Михаил! Спасибо вам за видео. Я начал изучать тему Bug Bounty и pentest. Какую вашу книгу мне стоит прочитать, чтобы узнать больше об уязвимостях например (XSS/CSRF/CSTI)

    • @Dev-lessons
      @Dev-lessons  ปีที่แล้ว +1

      В Web сервер глазами хакера я рассказывал про это. Про XSS есть видео на моем бусти, ссылки на видео есть здесь www.flenov.info/plus/video/1

    • @rageman1867
      @rageman1867 ปีที่แล้ว

      @@Dev-lessons Спасибо вам большое 🤝

  • @jeep456789
    @jeep456789 ปีที่แล้ว +2

    Только сегодня случайно в библиотеке наткнулся на книгу "Web сервер - глазами хакера", пошёл смотреть на ютюбе ролики, и тут это видео, очень круто

  • @tree-service
    @tree-service 6 หลายเดือนก่อน

    а как узнать какой именно куки или какие именно передаваемые данные на сервер участвуют каким-либо образом в SQL?

    • @Dev-lessons
      @Dev-lessons  6 หลายเดือนก่อน

      Если нет исходного кода, то никак, только пробовать и смотреть на результат. Если возникнет ошибка и сервер отобразит детали, то может в этом случае можно что-то узнать.

  • @Mr43046721
    @Mr43046721 2 ปีที่แล้ว +2

    Т.е. из sql можно создавать файлы в файловой системе? И даже Шелл запускать? Ого, не знал. Надо поизучать эту тему.
    Круто было бы если вы, Михаил, сделали в будущем видео о том, как это сделать

    • @Dev-lessons
      @Dev-lessons  2 ปีที่แล้ว +5

      Сам чистый SQL не может, а как я сказал некоторые базы могут позволять за счёт своих расширений, у MS это Transact: например xp_cmdshell

  • @Daman_24
    @Daman_24 ปีที่แล้ว +1

    Здравствуйте. Простите, возможно, за глупый вопрос. Я только начинаю изучать программирование. Скажите, а сработает ли инъекция, если использовать preparedStatment(), но не использовать setParametr(), то есть параметры указать в самом preparetStatment().
    Например так:
    PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO User (name, lastName, age) " +
    "VALUES ('" + name + "', '" + lastName + "', '" + age + "');") , где name, lastName, age - это параметры метода для сохранения user(а), внутри которого и прописан preparedStatment().
    Заранее спасибо.

    • @Daman_24
      @Daman_24 ปีที่แล้ว

      По сути получается, что я использую preparedStatment(), как обычный Statment()

    • @Dev-lessons
      @Dev-lessons  ปีที่แล้ว

      Да, будет инъекция. Лучше так не писать код

    • @Daman_24
      @Daman_24 ปีที่แล้ว

      @@Dev-lessons Принял. Спасибо.

  • @ДенисК-р6я
    @ДенисК-р6я 2 ปีที่แล้ว +4

    Второй, это же тоже призовое место в комментариях?

    • @IgorGallemar
      @IgorGallemar 2 ปีที่แล้ว

      Неа, даже шоколадную медальку не дадут 😂

  • @antovvvvvv
    @antovvvvvv 2 ปีที่แล้ว +1

    Пришел после обреченных. Кто-нибудь может объяснить как это вообще работает в web. Ну допустим хакер смог провести injection и хочет похитить данные. Так что будет при Select * from where UserId = 1234 OR 1=1 ? У него на странице каким-то чудом появится вся таблица что ли ?
    Или надо прям потом настраивать linked server итд, чтобы данные скопировать на сервер хакера ?

    • @Dev-lessons
      @Dev-lessons  2 ปีที่แล้ว +2

      Именно этот пример не для воровства данных, а для обхода авторизации. Воровство данных будет в отдельном видео

    • @antovvvvvv
      @antovvvvvv 2 ปีที่แล้ว

      ​@@Dev-lessons Как чисто SQL разрабу будет интересно посмотреть как можно шкодить без языка програмирования )

  • @alexdolgov4855
    @alexdolgov4855 2 ปีที่แล้ว +5

    drop from youtube ;--

  • @_X_sneakers
    @_X_sneakers ปีที่แล้ว

    Извините, непонятный момент на 6:35, каким образом хакер может получить доступ к карточкам других пользователей?

    • @Dev-lessons
      @Dev-lessons  ปีที่แล้ว +3

      9999 - число, которое должно быть большим, чтобы такой карточки в базе данных не было. Тогда UserID='id' AND Card='9999' ничего не вернет.
      В этом случае в силу вступает вторая половина фильтра ИЛИ:
      or UserID = 1. Мы не проверяем карточку, а фильтруем только по пользователю, а значит в результате мы получим первую карточку для UserID = 1

    • @_X_sneakers
      @_X_sneakers ปีที่แล้ว +1

      ​@@Dev-lessonsСпасибо вам большое

  • @IgorGallemar
    @IgorGallemar 2 ปีที่แล้ว +2

    Первый!!!

  • @gluck59
    @gluck59 2 ปีที่แล้ว +2

    Посмотрел несколько роликов Михаила
    По всей видимости, знания автора столь обширны, что он не в состоянии систематизировать их подачу и его уроки напоминают беспоярдочный бег курицы по птичьему двору, или, по-научному, броуновкое движение.
    Не стоит такое смотреть дабы не забивать себе голову разрозненной информацией, куски которой поданы совершенно беспорядочно.

    • @Dev-lessons
      @Dev-lessons  2 ปีที่แล้ว +1

      Спасибо за отзыв

  • @MaximBordyug.
    @MaximBordyug. 4 หลายเดือนก่อน +2

    Зависть пошла)

    • @Dev-lessons
      @Dev-lessons  4 หลายเดือนก่อน +1

      Бывает

  • @ЕгорЕгорович-д2т
    @ЕгорЕгорович-д2т 2 หลายเดือนก่อน

    Полная дичь .не інформативно . Просто треп.

    • @Dev-lessons
      @Dev-lessons  2 หลายเดือนก่อน

      Главное, что комментарий отличный, спасибки

  • @Nerpa66
    @Nerpa66 2 ปีที่แล้ว +2

    Мне не интересна твоя жизненая история . Слишком много воды.

    • @Dev-lessons
      @Dev-lessons  2 ปีที่แล้ว +1

      Ну тогда не стоит смотреть меня, у меня во всех видео много личного опыта, историй

    • @Nerpa66
      @Nerpa66 ปีที่แล้ว

      @@Dev-lessons Уговорил, больше смотреть не буду.