
Tokeniseur, analyseur syntaxique et analyseur pour SQL / SQLI
Analyseur de tokenisation SQL / SQLI. Pour
Voir https://www.client9.com/ pour les détails et présentations.
Exemple simple :
#include <stdio.h>
#include <strings.h>
#include <errno.h>
#include "libinjection.h"
#include "libinjection_sqli.h"
int main(int argc, const char* argv[])
{
struct libinjection_sqli_state state;
int issqli;
const char* input = argv[1];
size_t slen = strlen(input);
/* in real-world, you would url-decode the input, etc */
libinjection_sqli_init(&state, input, slen, FLAG_NONE);
issqli = libinjection_is_sqli(&state);
if (issqli) {
fprintf(stderr, "sqli detected with fingerprint of '%s'\n", state.fingerprint);
}
return issqli;
}
$ gcc -Wall -Wextra examples.c libinjection_sqli.c
$ ./a.out "-1' and 1=1 union/* foo */select load_file('/etc/passwd')--"
sqli detected with fingerprint of 's&1UE'
Exemples plus avancés :
Voir CHANGELOG pour les détails.
Les versions sont listées comme « majeure.mineure.corrective »
Les versions majeures sont des changements significatifs de l'API et/ou du format d'empreinte. Les applications devront être recompilées et/ou refactorisées.
Les versions mineures sont des changements de code C. Ceux-ci peuvent inclure :
Les versions correctives sont purement des changements de données. Elles peuvent être appliquées en toute sécurité.
Les résultats d'intégration continue sur https://travis-ci.org/client9/libinjection testent les éléments suivants :
Copyright (c) 2012-2016 Nick Galbreath
Sous licence open source standard BSD 3-Clause. Voir COPYING pour les détails.
Le répertoire src contient tout, mais vous devez seulement copier les fichiers suivants dans votre arborescence source :