悪用可能であれば、アプリケーション層が無視する適切なエスケープ文字を見つけなければなりませんが、データベースはそうではありません。
そこにはいくつかのオプションがあります:
\' This is a single escaped quote, that presents as a literal instead of a transalation.
'' This is another way of escaping quotes, depending on the sql generator,
though since you have an engine that doubles quotes, this would end up being ''''
\'' A literal quote escape quote is sometimes necessary to get through more than one layer of abstraction
\\' May pass on a double quote with the escaped \ generating an odd number of quotes
は時々検証パーサは、彼らが正規表現またはリテラルファインダーを使用しているため、特定の文字に対して脆弱であるが、文字の異なるタイプを考慮していませんので、あなたが何かを選ぶことができますパーサはしていきませんが、いくつかのSQLパーサは、実行のためにASCIIに驚くべきことであり、不幸にこれらの作業をユニコード、htmlコード、六角、または他の文字書式を変換しますSQL
\t \n Playing around with spaces that might not be recognized might allow
you to hide your attack string from the quote doubler.
-- /**/ These are sql comments that could disrupt the validator.
を破壊しないことSQLの数同僚。
U+02BC is a apostrophe modifier that can translate to a simple apostrophe
U+0027 is the Unicode for an apostrophe
' is the html code for an apostrophe.
潜在的に脱出するために翻訳することができ異なるユニコード/ HTML /進数値または単一引用符の数は多くの文字がバックASCIIにマップしないと、翻訳者は必ずしもないので、これは、あります。いい仕事をしてください。
それでは、悪いSQL文字列を含むエラーメッセージを取得してそこから元に戻すことをお勧めします。あなたはSQL攻撃を直接開始する必要はありません。エラーは、あなたが対処していることについてかなりわかります。 エスケープではないにもかかわらず、どのような種類のエラーでもバージョンを特定できる場合は、そのバージョンを印刷するSQLエラーを取得できる可能性があります。そのために脆弱性を調べることができます。非常に長い行のASCIIテキストでもこの問題が発生することがあります。
ここでの作業の原則を読んで[テストツール](http://sqlmap.org)がどのようにそれを処理するかを見てください。 – tadman