
SQL / SQLI tokenizador parser analisador
Analisador/parser/tokenizador de SQL / SQLI. Para
Veja https://www.client9.com/ para detalhes e apresentações.
Exemplo simples:
#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'
Exemplos mais avançados:
Consulte CHANGELOG para detalhes.
As versões são listadas como "major.minor.point"
Major são mudanças significativas na API e/ou no formato das fingerprints. Os aplicativos precisarão ser recompilados e/ou refatorados.
Minor são mudanças no código C. Podem incluir
Point são exclusivamente mudanças nos dados. Podem ser aplicadas com segurança.
Os resultados da integração contínua em https://travis-ci.org/client9/libinjection testam o seguinte:
Copyright (c) 2012-2016 Nick Galbreath
Licenciado sob a licença de código aberto padrão BSD 3-Clause. Consulte COPYING para detalhes.
O diretório src contém tudo, mas você só precisa copiar os seguintes arquivos para sua árvore de código: