SQL инжекцията е един от най-често срещаните механизми за уеб атаки, използвани от нападателите за кражба на записи и чувствителни записи от бизнес или платформа за социални медии. Въпреки че SQL Injection може да загуби всякаква информация от приложение, което използва SQL база данни, то се използва най-често за нападение на уеб уебсайтове. SQL инжекцията е техника за инжектиране на код, която хакерите могат да използват за вмъкване на злонамерени SQL изрази във входни заявки за изпълнение през основната SQL база данни. Този метод е осъществим поради неправилно кодиране на наклонени уеб пакети. SQL инжекцията се повишава поради факта, че достъпът до полета за въвеждане е предоставен за потребителя да въведе всички лоши типове SQL изрази, за да премине през и да вмъкне заявки директно в базата данни.
Нека напишем този URL в браузъра си и да вземем категориите бонуси от таблицата:
https://insecure-website.com/products?category=Бонус
Това кара приложението да направи SQL въпрос, за да извлече информация за съответната стока от базата данни по следния начин:
ИЗБЕРЕТЕ * ОТ стока КЪДЕТО категория = „Бонус“ И освободен = 1
Тази SQL заявка изисква от базата данни да върне:
Софтуерът не въвежда в сила никакви защити срещу атаки с инжектиране на SQL, така че нападателят може да организира нападение като:
https://insecure-website.com/products?category=Bonus’ – –
Резултатът от горната заявка е:
ИЗБЕРЕТЕ * ОТ продукти КЪДЕТО категория = „Бонус“–“ И пуснати = 1
Ключовият компонент тук е, че серията с двойно тире — е индикатор за забележки в SQL и означава, че останалата част от въпроса се интерпретира като коментар. Това успешно премахва останалата част от заявката, така че вече не включва AND launched = 1. По този начин се показва всеки един продукт, като например непуснати продукти.
Друг метод за SQL инжекция:
https://insecure-website.com/products?category=Bonus’+OR+1=1–
Резултатът:
ИЗБЕРЕТЕ * ОТ продукти КЪДЕТО категория = „Бонус“ ИЛИ 1=1–‘ И пуснати = 1
Използвайки горната заявка, можете лесно да атакувате базата данни.
Заобиколете акаунта за влизане, като използвате следната заявка:
ИЗБЕРЕТЕ * ОТ потребители КЪДЕТО потребителско име = ‘john’ И парола = ‘johnwilliam’
Регистърът на нападателя с потребителското име без никаква парола, в SQL заявка използвайте – – парола с двойно тире и я коментирайте в клаузата where. Например, изпратете заявка на администратора на потребителско име и празно поле за парола. Запитването е:
ИЗБЕРЕТЕ * ОТ потребители КЪДЕТО потребителско име = ‘администратор’ – – ‘ И парола =
Те също така са много методи за SQL инжектиране.
По-долу е даден прост PHP код за SQL инжекция в страницата за вход:
$uname = $_POST [ ‘ uname ‘ ] ;
$passwrd = $_POST [ ‘passwrd’];
$query = ‘ изберете потребителско име, преминете от потребители, където потребителско име = ‘ $uname ‘ и парола = ‘ $passwrd
$result = mysql_query ($query);
$rows = mysql_fetch_array ($резултат);
Ако ( $редове )
{
echo ‘ Влезли сте успешно ‘ ;
create_session() ;
}
друго {
echo ‘ По-добър късмет следващия път’ ;
}