2017-10-08 4 views
-2

練習サイトでプレイしていて、ANSI SQLモードを使用しているサイトを無効にしようとしています))を入力します。私の目標はログインです。私はすでに与えられたユーザー名を知っています。SQLインジェクション:ANSI SQLモードを解除する方法(2つの単一引用符をエスケープする)

私は、パスワードフィールドで以下のような多数の組み合わせを試しました。私はバックスラッシュのいくつかの変種を使用しなければならないと思うが、私はかなり長い間混​​乱してきた。私はいくつかの助けに感謝します、ありがとう!

\'or'1'='1 
+0

ここでの作業の原則を読んで[テストツール](http://sqlmap.org)がどのようにそれを処理するかを見てください。 – tadman

答えて

2

悪用可能であれば、アプリケーション層が無視する適切なエスケープ文字を見つけなければなりませんが、データベースはそうではありません。

そこにはいくつかのオプションがあります:

\' 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テキストでもこの問題が発生することがあります。

+0

だから私はそれを使って遊んでいますが、有効なmysqlクエリを取得できないようです。私はSELECT *から[INPUT]の顧客を持っているとします。だから二重引用符を使用するこのテーブルを倒すために、私は\ 'または1 = 1に変換することを考えています*顧客は' \ ''または1 = 1と解釈しますが、何とか1 = 1をリテラルに入れなければなりません一重引用符が二重になっている条件で – MMM

+0

最初にエラーの原因となるUnicode/Hex /エスケープ文字を見つけましたか?パルシングバリデーターを通過してエラーを引き起こす可能性のある値を見つけたら、これが注入攻撃を開始する方法です。 Unicode変換が動作する場合、U + 0027または1 = 1 - – user1442498

関連する問題