忍者ブログ

からすまる日誌

2020021003 わざとやばいログインを作る

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

2020021003 わざとやばいログインを作る

みなさんのネットがつながらない問題:

通常はpingでどのへんまでネットがつながってないか調べるらしい

コマンドプロンプトでいれる
スペースで切り離したホスト名(www.yahoo.co.jp)とかを指定

Microsoft Windows [Version 10.0.18362.592]
(c) 2019 Microsoft Corporation. All rights reserved.

C:\Users\web.DESKTOP-EQR2U6K>ping yahoo.co.jp

yahoo.co.jp [183.79.135.206]に ping を送信しています 32 バイトのデータ:
192.168.11.1 からの応答: 宛先ホストに到達できません。
192.168.11.1 からの応答: 宛先ホストに到達できません。
192.168.11.1 からの応答: 宛先ホストに到達できません。
192.168.11.1 からの応答: 宛先ホストに到達できません。

183.79.135.206 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、

C:\Users\web.DESKTOP-EQR2U6K>
 
ip ver6が提供するサービスだけが開けてver.4がだめという謎の現象が起こっているらしい
 



SQLインジェクション

わざとmd5で安全性の低いデータを作ってみますよ

<p><?php echo md5("nobinobi") ?></p>
<!--わざとセキュリティの低いのを出力し、コピー

d0209b61369398a6d2469738c16ffdbf


DB→挿入→
INSERT INTO `users` (`u_id`, `pass`, `nickname`) VALUES ('nobita',
'd0209b61369398a6d2469738c16ffdbf', 'のび太');
 


 

→サクラ、index.php

index2.phpで別名保存

いまindex2.phpはパスワードハッシュしてるので、
<!DOCTYPE html>より上を全部削除
このページは窓口だけにし、認証は別の画面にしましょう

   <form method="post" action="auth.php">
と変更
認証ボタンの次の行とかもカット
このページのphpを全部取る形

・u_idとpassが飛んでくるのでそれを処理したい
 


新規でauth.php

かならずu_idとpassが来ている前提で記述するよ。テストなんで。
脆弱なものをわざとつくるよ

こういう構造
 

 

ここまで
--->index2.php

<!DOCTYPE html>
<html lang="ja">
 <head>
  <meta charset="UTF-8">
  <title>ログイン認証</title>
  <link rel="stylesheet" href="auth.css">

 </head>
 <body>
  <div id="container">
   <form method="post" action="auth.php">
    <table>
      <tr>
      <th><label for="u_id">ユーザー名</th>
     <td><input type="text" name="u_id" id="u_id"></td>
     </tr>
     <tr>
      <th><label for="pass">パスワード</label></th>
      <td><input type="password" name="pass" id="pass"></td>
     </tr>
    </table>
    <p><button type="submit">認証</button></p>

   </form>

  </div>

 </body>
</html>

--->auth.php
<?php
//いつもの
$user="root";
$dbpass="";
$host="localhost";
$dbname="auth";
$dsn="mysql:host={$host};dbname={$dbname};charset=utf8";

$pdo=new PDO($dsn, $user, $dbpass);
//つくりたいsqlは以下の通り
//SELECT nickname FROM users WHERE u_id='nobita' AND pass='hoehoehoe'";
$sql="SELECT nickname FORM users WHERE u_id='" . $_POST["u_id"] . "'
AND pass='" . $_POST["pass"] . "'";
echo $sql;

?>




たいへんややこしい""の開け閉じ。黄色の部分がかたまりでドットでつないでいる。

--->出力

SELECT nickname FORM users WHERE u_id='nobita' AND pass='aaa';
 


しかしさきDBに登録したのは脆弱とはいえmd5でハッシュしてるからこのままだと機能ないね

こう書き換えますよ

$pdo=new PDO($dsn, $user, $dbpass);
$pass = md5($_POST["pass"]); //わざとです。脆弱なハッシュ

//つくりたいsqlは以下の通り
//SELECT nickname FROM users WHERE u_id='nobita' AND pass='hoehoehoe'";
$sql="SELECT nickname FORM users WHERE u_id='" . $_POST["u_id"] . "'
AND pass='" . $pass . "'";
echo $sql;

実行結果

SELECT nickname FORM users WHERE u_id='nobita' AND
pass='47bce5c74f589f4867dbd57e9ca9f808'

ちょっと前まではみんなこーゆー危険な書き方をしていたらしい


ぷりぺあーどならぷりぺあーどをつかうが
直にsqlを実行するときはくえりーめそっどをつかうよ
$res=$pdo->query($sql);

PR

コメント

ブログ内検索

カレンダー

03 2025/04 05
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30