PHP ログイン インジェクションの小さな例
PHP を学習する過程で SQL インジェクションについて聞いたことがあるでしょう。簡単に言うと、バックグラウンドで SQL コードの脆弱性を利用して不正な操作を実行することです。たとえば、ログインするバックエンド コードの脆弱性を悪用すると、ユーザーは実際のユーザー名とパスワードを知らなくても、フォームからデータを送信してバックエンドに正常にログインできます。ユーザー検証の例を見てみましょう。まず、次のようにデータベースとデータ テーブルを作成し、レコードを挿入します。
CREATE TABLE `user` (
`userid` int(11) NOT NULL auto_increment,` ユーザー名` varchar(20) NOT NULL デフォルト '',
`パスワード` varchar(20) NOT NULL デフォルト '',
PRIMARY KEY (`userid`)
) TYPE=MyISAM AUTO_INCREMENT=3 ;
#
# テーブル `user`
#
INSERT INTO `user` VALUES (1, 'angel', 'mypass');
検証するコードユーザーファイルは次のとおりです:
PHP コード:
$servername = "localhost";
$dbusername = "root";
$dbpassword = "";
$dbname = "injection ";
mysql_connect($servername,$dbusername,$dbpassword) または die ("データベース接続に失敗しました");
$sql = "SELECT * FROM user WHERE username='$username ' AND パスワード='$パスワード '";
$result = mysql_db_query($dbname, $sql);
$userinfo = mysql_fetch_array($result);
if (empty($userinfo)){
echo "ログイン失敗" ;
} else {
echo "ログイン成功";
}
echo "
SQL クエリ:$sql
";
? >
この時点で次のように送信します:
http://127.0.0.1/injection/user.php?username=angel'or 1=1
次が返されます:
警告: mysql_fetch_array(): 指定された引数は、F:wwwinjectionuser.php の 13 行目で有効な MySQL 結果リソースではありません
ログインに失敗しました
SQL クエリ:SELECT * FROM user WHERE username='angel' or 1=1' ANDパスワード='
PHP 警告 : mysql_fetch_array(): 指定された引数は、F:wwwinjectionuser.php の 13 行目で有効な MySQL 結果リソースではありません
わかりますか?一重引用符が閉じられた後、次の一重引用符はコメントアウトされず、一重引用符が正しくペアにならないことになります。したがって、作成したステートメントでは Mysql を正しく実行できず、再構築する必要があることがわかります。 🎜>http://127.0.0.1/injection/user.php?username=angel'or '1=1
このとき、「Login Successful」と表示され、成功したことがわかります。または、次のように送信します:
http://127.0.0.1/injection/user.php?username=angel'/*
http://127.0.0.1/injection/user.php?username=angel'%23
これにより、次のステートメントがコメントアウトされます。これら 2 つの投稿の違いについて説明します。言うまでもなく、最初に投稿した文は論理演算を使用しています。 2 番目と 3 番目の文は、mysql の特性に基づいています。Mysql は、/* と # の 2 つのコメント形式をサポートしているため、送信するときに次のコードをコメントアウトします。エンコードの問題により、# を送信することに注意してください。 IE のアドレス バーは空になるため、アドレス バーで送信する場合は、# になる前に %23 を送信する必要があります。これは、PHP の論理演算よりもはるかに簡単であることがわかります。 ASP よりもはるかに強力で柔軟です。
詳細な元のアドレス: http://www.phpnewer.com/index.php/Dmaq/detail/id/202
-----解決策-- - -----------------
ふふふふふふふ
------解決策---------
共有してくれてありがとう
------解決策---------
記事は古すぎて時代遅れです。
------解決策---------
昨日公開されたばかりの記事は古いですか? ? ?
ディスカッション