忍者ブログ

からすまる日誌 mySQL

授業ノートのまとめ

応用(6) 脆弱なログイン

×

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

応用(6) 脆弱なログイン

Fatal error: Uncaught Error: Call to a member function fetch() on bool
in C:\xampp\htdocs\php\makino\auth\auth.php:18 Stack trace: #0 {main}
thrown in C:\xampp\htdocs\php\makino\auth\auth.php on line 18

またエラーが出た。
呼び出すメンバーがないというらしい。

・接続ができないとでるらしい
・またはsql文がおかしい

$pdoを作るるまでのあたりが間違っていると出るらしい。
SQLは正しいがデータがないときは、こういうエラーではないらしい。


FROMがFORMになっていた
 


名前:nobita
パス:nobinobi
でログインしてみましょう

できた。(脆弱なシステムが)
 


ではこれからクラッキングをしてみましょう

・$sql文をつくるときにそのまま使っているのが超まずい
・md5なのもまずいが

ここまで

--->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
session_start();

//いつもの
$user="root";
$dbpass="";
$host="localhost";
$dbname="auth";
$dsn="mysql:host={$host};dbname={$dbname};charset=utf8";

$pdo=new PDO($dsn, $user, $dbpass);
$pass = md5($_POST["pass"]);

$sql="SELECT nickname FROM users WHERE u_id='" . $_POST["u_id"] . "'
AND pass='" . $pass . "'";
//echo $sql;
//print_r($_POST);

$res= $pdo->query($sql);
$row= $res->fetch(PDO::FETCH_ASSOC);
//echo $row["nickname"];

//認証するかどうか
if($row["nickname"]){ //nicknameが存在すれば
 //認証
  $_SESSION["login"]=true;
  $_SESSION["name"]=$row["nickname"];
  header("Location: mypage.php");
}else{
  //認証不可
  header("Location: index2.php");
}

?>


さて、
SELECT nickname FROM users WHERE u_id="nobita" OR '1'='1' AND pass="usono_pass";

1=1はすべて真だから「条件に該当」とみなされる
これをDBのSQLタブで打ち込むとちゃんとデータが出てきてしまう


また同じエラーだがどういうことかな?

Fatal error: Uncaught Error: Call to a member function fetch() on bool
in C:\xampp\htdocs\php\makino\auth\auth.php:19 Stack trace: #0 {main}
thrown in C:\xampp\htdocs\php\makino\auth\auth.php on line 19

入力しているものがまずかったようですね

ユーザー名 nobita' OR '1'='1
パスワード てきとう

ログインできてしまう
 

PR

コメント

ただいまコメントを受けつけておりません。

プロフィール

HN:
karasumaru
性別:
非公開

P R