lesson32-37の障壁によるSQL-libのブレーク

LESS32

知識寝具:バイト幅の注射

広い射出原則バイト:

GBKは、2つのバイトを占有します

ASCIIバイトを占めています

PHPは、GBKによってコードされ、実行される機能は、(記号が追加される「\」)ASCIIコードを追加することで、MYSQLのデフォルトの文字セットは、GBKバイト文字セットの幅です。

私たちは皆知っている%DF 'PHP(オープンGPC、にaddslashes関数、またはicovなどで)、単一引用符は\バックスラッシュされ、なりを逃れA%DF \'、\%の六角IS今5C、%DF \「=%DF%5cを27% プログラムはデフォルトの文字は、GBKバイト文字セット幅、エンコード時のMySQLのGBKを設定している場合は、考慮5C%DF% ワイド文字ですである、と言うこと:%DF \ '=%DF %5C%27 = 喪'、単一引用符で注射のように。
参考リンクします。https://blog.csdn.net/helloc0de/article/details/76180190

など、中国語、韓国語、日本語、幅広いバイトがあり、デフォルトの英語はバイトです。 

例:

ID = 1 '1 \ための' 符号1%5C%SQL IDに27後= \「とXXXX噴射この時点で完了することができません

ID = 1%DF '処理1%DF \' 符号1%DF%5C%27は、SQL IDに搬入した後= 1「とXXXは、この時点で広いバイトインジェクションの脆弱性が存在します 

 

ここでは、チェックポイントを開始します。

私たちは、ソースがにaddslashes機能を追加した観察しました

 

 PHPのにaddslashes()関数:

 

 check_addslashes()は、例えば、単一引用符\の前に追加されます。私はハッカーの着信にaddslashes()、得た:I \「m個のハッカー

これは、ワイドバイト注入されている場に出ます。
1.私たちは、入力しましたか?ID = 1」、関数がエスケープされるように見つけることができます

 

 広いバイト2.注入
入力:ID = -1%DF組合は、 1,2を選択し、security.usersからGROUP_CONCAT(CONCAT_WS(0x7eの、ユーザ名、パスワード)) - +?

 

 図3はまた、%のAAの%の5C '構築に使用することができ
%のAA%5C'
%5C%27%AAの
エスケープ得
%のAA%5C%5C%5C %27
デコードを

 

 ?输入:ID = -1%AA%5C組合1,2を選択し、security.usersからGROUP_CONCAT(CONCAT_WS(0x7eの、ユーザ名、パスワード)) - +

 

 

 


LESS33

そして、同じようなハードル

?输入:ID = -1%、DF組合1,2を選択し、security.usersからGROUP_CONCAT(CONCAT_WS(0x7eの、ユーザ名、パスワード)) - +

 

 


LESS34

これは、ポスト噴射タイプを使用して見ることができ、そしてソースが依然としてにaddslashesを用いて観察された()関数

 

 私たちは、ポストの着信データがまだ再エンコードされたので、私は、見つかりません、ワイドバイトを注入してみてください。

我々は、手動で削除する必要があり、それはより多くの私たちには25%をトランスコーディング賃金を与え、げっぷキャプチャ画面でアカウントのパスワードを入力します。

 

 その後、我々は、パケットに変更
を選択unmae = A%DF組合 1,2#&passwdの=広告&提出=提出を

 

 

また、当社は、UTF-16にUTF-8に変換することができます。

たとえば、「UTF-16はに変換されます:」。

図示のように:

 

 

 

 


LESS35

これは非常に同じですが、何の小包オフはありません

输入:security.usersからID = -1組合は1,2を選択し、GROUP_CONCAT(CONCAT_WS(0x7eの、ユーザ名、パスワード)) - +?

 

 


LESS36

観察源はPHPの使用は()関数をmysql_real_escape_stringのことを見出しました

 

 
リファレンス接続します。https://www.w3school.com.cn/php/func_mysql_real_escape_string.asp

mysql_real_escape_stringの()関数は、文字列で使用されるSQLステートメント内の特殊文字をエスケープします。

次の文字が影響を受けます。

  • \ X00
  • \ nは
  • \ rを
  • \
  • "
  • "
  • \ X1A

成功した場合、この関数はエスケープされる文字列を返します。それが失敗した場合は、falseが返されます。

我々はまだワイドバイト注入を使用することができます。

入力:ID = 1%DF組合1,2を選択し、データベース() - +?

 

 


LESS37

 

37及び34 OFF OFF同様に、mysql_real_escape_stringの()関数を用いてPOSTタイプは、
また、UTF-16としてUTF-8から単一引用符を変換する方法を使用することができ

また、げっぷすることにより、データパケットを変更することができます

おすすめ

転載: www.cnblogs.com/c1047509362/p/12463920.html