SQL / SQLI トークナイザ・パーサ・アナライザ。対応言語:
詳細とプレゼンテーションは以下を参照: https://www.client9.com/
簡単な例:
#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);
/* 実際のアプリケーションでは、入力をURLデコードするなどしてください */
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'
より高度なサンプル:
詳細は CHANGELOG を参照。
バージョンは "メジャー.マイナー.ポイント" で表記。
メジャーバージョンは、APIやフィンガープリント形式の大きな変更を含む。 アプリケーションは再コンパイルやリファクタリングが必要になる。
マイナーバージョンはCコードの変更を含む。これには以下が含まれる可能性がある:
ポイントリリースは純粋なデータ変更のみ。安全に適用できる。
継続的インテグレーションの結果は https://travis-ci.org/client9/libinjection でテストされている:
Copyright (c) 2012-2016 Nick Galbreath
標準の BSD 3-Clause オープンソースライセンスの下で提供されます。 詳細は COPYING を参照。
src ディレクトリにすべてが含まれていますが、以下のファイルだけを ソースツリーにコピーすれば利用できます: