Здравствуйте, дорогие друзья.
Продолжаем рассматривать SQL-инъекции, и в данном уроке мы будем пытаться извлечь пароли из базы данных.
У нас есть таблица «accounts»:
Нам нужно узнать имена столбцов, которые есть в этой таблице. Это делается с помощью выражения, которое очень похоже на предыдущее: «union select 1,table_name,null,null,5 from information_schema. tables where table_schema = 'owasp10'», за искючением замены «table_name», на «column_name», и выбора между «information_schema. tables», в «information_schema. columns». Также нужно выбрать таблицу, которую необходимо исследовать. В моем случае — это «accounts», вместо «owasp10». Итоговое выражение будет иметь вид: «union select 1,column_name,null,null,5 from information_schema. columns where table_name = 'accounts'»:
Все сработало отлично, и это все столбцы, которые мы видели ранее.
Предлагаю сделать выборку из столбцов «username», и «accounts». Выражение, которое мы будем применять, очень похоже на предыдущее. Нужно изменить 2,3,4 позицию, на «username», «password», и «is_admin». Позиция 1 и 5 не отображается в выводе. Добавим вместо «information_schema. columns where table_name = 'accounts'», на значение «accounts».
Выражение примет вид: «union select 1,username,password,is_admin,5 from accounts»:
Вставим данное выражение в URL, и получаем вывод:
У нас есть все имена пользователей и пароли. Обратите внимание на учетную запись администратора. На самом деле эта запись имеет большие привилегии на ресурсе, по отношению к другим учетным записям. Вы можете делать все, что угодно, загружая php-шеллы, бэкдоры, вирусы и т. д.
Примечательно то, что нам не важно, какой сложности будет пароль, так как мы будем читать его из базы данных.
На этом все. Всем хорошего дня.