強引な
インターフェース:
ソースコード:
<?php
if(isset($_GET['Login'])){
//Getusername
$user=$_GET['username'];
//Getpassword
$pass=$_GET['password'];
$pass=md5($pass);
//Checkthedatabase
$query="SELECT*FROM`users`WHEREuser='$user'ANDpassword='$pass';";
$result=mysql_query($query)ordie('<pre>'.mysql_error().'</pre>');
if($result&&mysql_num_rows($result)==1){
//Getusersdetails
$avatar=mysql_result($result,0,"avatar");
//Loginsuccessful
echo"<p>Welcometothepasswordprotectedarea{$user}</p>";
echo"<imgsrc="{$avatar}"/>";
}
else{
//Loginfailed
echo"<pre><br/>Usernameand/orpasswordincorrect.</pre>";
}
mysql_close();
}
?>
コード分析:
「ログイン」フォームで送信された「ユーザー名」と「パスワード」を取得し、パスワードに対してmd5検証を実行してから、データベースにアクセスして、入力したアカウントと対応するパスワードが存在するかどうかを照会します。存在する場合は、 「パスワードへようこそ」保護領域を出力します。存在しない場合は、「ユーザー名またはパスワード、あるいはその両方が正しくありません。」を出力します。
侵入手順:
手順1:burp suiteを使用してパケットをキャプチャし、正しいアカウント名を入力します:DVWAのadmin、間違ったパスワード:123、[送信]をクリックすると、burpsuiteがトラフィックパケットをキャプチャします。
ステップ2:キャプチャしたパッケージを侵入者モジュールに入れます
ステップ3:侵入者モジュールの位置を入力し、爆破する場所を設定します(最初にクリアしてから、パスワードの後ろのフィールド123を選択し、[追加]をクリックします)
ステップ4:侵入者モジュールのペイロードを入力し、からパスワードを選択しますリストのドロップダウンボックスから追加してブラストを続行します。[ペイロードセット]列に3425のデータが表示されます。複数のスレッドを使用して、同時にブラストすることを検討できます。
ステップ5:侵入者モジュールのオプションを入力し、スレッド数を50に設定してから、右上隅にある[攻撃の開始]をクリックしてブラストを開始します。
手順6:結果を確認する長さをフィルタリングすることで、パスワードの長さが最も長いことがわかります。応答を確認すると、「ようこそ」の結果が表示され、ブラストが成功していることがわかります。
低レベルの質問については、SQLインジェクションを使用して潜入することもできます
ステップ1:ソースコードを確認し、データベースクエリステートメントが保護されていないことを確認します。「closedatabasequeryステートメント」を作成してログインできます。
ステップ2:[ユーザー名]列に「admin」または「1」=「1」と入力してクエリを実行します。 sqlステートメントは次のように構成されます。SELECT* FROM'users 'WHERE user =' admin 'or' 1 '=' 1 'AND password =' ';または、1 = 1とパスワードを同じ側に置くため、1 = 1はtrueパスワードを照会する必要はありません。
ステップ3:[ユーザー名]列に「admin」#と入力し、次のようにsqlステートメントを作成します。SELECT* FROM'users 'WHERE user =' admin '#AND password =' '。次の#はコメントに相当するため、つまり、クエリメソッドが変更され、正しいユーザー名でログインできます。
発生した問題
1. burp suiteを使用してローカルトラフィックパケットをキャプチャできません。
解決策:アドレスバーのローカルホストを変更
前にローカルIPに
変更します
。変更後:2。DVWAは実際にはレベルを変更できず、レベルが設定された後にキャプチャされたパケット不可能な
解決策:現在のブラウザを閉じ、chromeの認識ブラウジングモードを使用してDVWA
3にアクセスします。ターゲットのポートをプロキシと同じ8080に変更した後、ブラストの結果が正しくありません。 80、ブラストの結果は正しいです。