πŸ”’ΠšΠ°ΠΊ Π½Π°ΠΉΡ‚ΠΈ уязвимыС SQL сайты: 5 простых способов для SEO ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈπŸ”

Для поиска уязвимых SQL-сайтов ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅Ρ…Π½ΠΈΠΊΡƒ, ΠΈΠ·Π²Π΅ΡΡ‚Π½ΡƒΡŽ ΠΊΠ°ΠΊ SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΡ. Π’ этом случаС Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ врСдоносный SQL-ΠΊΠΎΠ΄ Π² запросы ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ послСдствиям, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ нСсанкционированной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ….

Для выполнСния SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΈ, Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°ΠΉΡ‚ΠΈ ΡƒΡΠ·Π²ΠΈΠΌΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Π΅Π±-прилоТСния, Π³Π΄Π΅ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π΅ Π½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΡŽΡ‚ΡΡ ΠΈΠ»ΠΈ ΡΠΊΡ€Π°Π½ΠΈΡ€ΡƒΡŽΡ‚ΡΡ.

Одним ΠΈΠ· распространСнных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² поиска уязвимых SQL-сайтов являСтся использованиС инструмСнтов автоматичСского поиска уязвимостСй, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ SQLMap ΠΈΠ»ΠΈ Havij. Π­Ρ‚ΠΈ инструмСнты автоматичСски ΡΠΊΠ°Π½ΠΈΡ€ΡƒΡŽΡ‚ Π²Π΅Π±-сайты ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ уязвимыС Ρ‚ΠΎΡ‡ΠΊΠΈ Π²Ρ…ΠΎΠ΄Π°.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для поиска уязвимых SQL-сайтов:


SELECT * FROM users WHERE username = 'admin' AND password = 'password' OR '1'='1';

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Ссли Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ уязвимо ΠΊ SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎ условиС '1'='1' Π±ΡƒΠ΄Π΅Ρ‚ всСгда истинным, ΠΈ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊ смоТСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π±Π΅Π· знания ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ пароля.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как Π½Π°ΠΉΡ‚ΠΈ уязвимыС SQL сайты?

SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΈΠΌΠΈ ΠΈΠ· самых распространСнных уязвимостСй Π² Π²Π΅Π±-прилоТСниях. Π­Ρ‚ΠΈ уязвимости Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚, ΠΊΠΎΠ³Π΄Π° Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½Π΅ ΡΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ с Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ… Π² SQL-запросы. Π—Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΈ для получСния нСсанкционированного доступа ΠΊ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ выполнСния врСдоносных дСйствий. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π½Π°ΠΉΡ‚ΠΈ уязвимыС SQL-сайты ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Π°Ρ‚Π°ΠΊΠΈ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΈ?

SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΡ - это ΠΌΠ΅Ρ‚ΠΎΠ΄ Π°Ρ‚Π°ΠΊΠΈ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊ Π²Π²ΠΎΠ΄ΠΈΡ‚ врСдоносный SQL-ΠΊΠΎΠ΄ Π² запрос, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΌ выполняСтся Π½Π° сторонС сСрвСра. Если Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄, это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… SQL-запросов. Π—Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Π΄Π°ΠΆΠ΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈΡ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…. ЦСлью Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ, ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Как Π½Π°ΠΉΡ‚ΠΈ уязвимыС SQL-сайты?

Π•ΡΡ‚ΡŒ нСсколько способов Π½Π°ΠΉΡ‚ΠΈ уязвимыС SQL-сайты. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим нСсколько ΠΈΠ· Π½ΠΈΡ….

1. ИспользованиС Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ инструмСнта для сканирования уязвимостСй

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ инструмСнты, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ SQLMap, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π² поискС уязвимых SQL-сайтов. Π­Ρ‚ΠΈ инструмСнты ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ автоматичСскоС ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚Π°Ρ†ΠΈΡŽ уязвимостСй SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΈ. Они Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚, анализируя структуру Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ отправляя врСдоносныС SQL-запросы, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π»ΠΈ уязвимости.


import requests

url = "http://example.com/login.php"
data = {
    "username": "admin' OR '1'='1",
    "password": "password"
}

response = requests.post(url, data=data)
    

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ отправляСм запрос Π½Π° страницу Π²Ρ…ΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Если Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π²Π²ΠΎΠ΄ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи администратора, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² нашСм Π²Π²ΠΎΠ΄Π΅ SQL-запрос Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: 'admin' OR '1'='1', Ρ‡Ρ‚ΠΎ всСгда Π²Π΅Ρ€Π½ΠΎ.

2. Π ΡƒΡ‡Π½ΠΎΠΉ Π°Π½Π°Π»ΠΈΠ· Π²Π΅Π±-прилоТСния

Π ΡƒΡ‡Π½ΠΎΠΉ Π°Π½Π°Π»ΠΈΠ· Π²Π΅Π±-прилоТСния ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ слоТным, Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, отправляя врСдоносныС Π²Π²ΠΎΠ΄Ρ‹ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ поля ΠΈ наблюдая Π·Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΈ уязвимости SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ошибки Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π²Ρ‹Π²ΠΎΠ΄ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΎΡ‚ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ повСдСния ΠΈΠ»ΠΈ Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя выполнСния запросов.


import requests

url = "http://example.com/search.php"
query = "SELECT * FROM users WHERE username = 'admin' AND password = 'password'"

response = requests.get(url, params={"q": query})
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм запрос для поиска ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ с ΠΈΠΌΠ΅Π½Π΅ΠΌ "admin" ΠΈ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΌ "password". Если ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΈ сущСствуСт, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ запрос Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ дСйствия.

Как ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΈ?

ΠŸΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΉ являСтся Π²Π°ΠΆΠ½Ρ‹ΠΌ аспСктом бСзопасности Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’ΠΎΡ‚ нСсколько Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ свои сайты ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΡ… Π°Ρ‚Π°ΠΊ.

1. ИспользованиС ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ выраТСния ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ SQL ΠΎΡ‚ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. ВмСсто нСпосрСдствСнной вставки Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² SQL-запросы, ΠΊΠΎΠ΄ SQL ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ запросы бСзопасными ΠΎΡ‚ уязвимостСй SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΈ.


import sqlite3

connection = sqlite3.connect("example.db")
cursor = connection.cursor()

username = "admin' OR '1'='1"
password = "password"

cursor.execute("SELECT * FROM users WHERE username = ? AND password = ?", (username, password))
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ SQLite для выполнСния запросов ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ вставляСм значСния Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² запрос. ВмСсто этого, ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ значСния ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²ΠΎΠΏΡ€ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π·Π½Π°ΠΊΠΈ. SQLite ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ эти ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠ°ΠΊ бСзопасныС Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΈ.

2. Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π²Π²ΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² SQL-запросах. Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ экранированиС ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… символов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π² SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΡΡ…. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Π°ΠΊΠΆΠ΅ Π²Π°ΠΆΠ½Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΌΡƒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏΡƒ.


import re

def sanitize_input(input_str):
    # Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½ΡƒΡŽ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ
    sanitized_str = re.sub(r"[^a-zA-Z0-9]", "", input_str)
    return sanitized_str

username = sanitize_input("admin' OR '1'='1")
password = "password"

cursor.execute("SELECT * FROM users WHERE username = ? AND password = ?", (username, password))
    

Ѐункция sanitize_input удаляСт всС ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы ΠΈΠ· Π²Π²ΠΎΠ΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΉ, Π΄Π°ΠΆΠ΅ Ссли Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ ΠΎΡ‚ этой ΡƒΠ³Ρ€ΠΎΠ·Ρ‹.

3. ИспользованиС Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² доступа ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ доступа ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ выраТСния ΠΈΠ»ΠΈ ORM-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ. Π­Ρ‚ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΉ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… уязвимостСй.

НСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ инструмСнты ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ уязвимости SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΉ ΠΈ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈΡ… ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ. Π—Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΉ являСтся Π²Π°ΠΆΠ½Ρ‹ΠΌ аспСктом Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ бСзопасных Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Поиск уязвимых сайтов для sql ΠΈΠ½ΡŒΠ΅ΠΊΡ†ΠΈΠΉ

Как Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сайт? | Уязвимости сайтов | XSS Π°Ρ‚Π°ΠΊΠ° | 18+

Поиск уязвимостСй Π²Π΅Π±-сайтов Ρ€ΡƒΠΊΠ°ΠΌΠΈ ΠΈ сканСрами

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ Π² SQL: основы ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

πŸ”’ΠšΠ°ΠΊ Π½Π°ΠΉΡ‚ΠΈ уязвимыС SQL сайты: 5 простых способов для SEO ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈπŸ”

Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… SQL: шаг Π·Π° шагом руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ