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から単一引用符を変換する方法を使用することができ
また、げっぷすることにより、データパケットを変更することができます