导读:
时刻保持谦逊,始终保持学习,探寻事物的本质,不要把事情复杂化
目录:
- 前言
- 流程
- 通过into outfile 进行文件写入
- 利用sqlmap
-
利用日志getshell
-
利用文件包含漏洞getshell
-
利用数据库备份getshell
前言:
为什么SQL注入能拿Shell?
SQL注入的本质是通过恶意SQL语句操控数据库,而部分数据库支持执行系统命令或写入文件。若能利用注入点向Web目录写入一句话木马,即可通过中国菜刀/蚁剑连接获取Shell。
流程:
寻找SQL注入点 → 判断数据库类型 → 获取Web路径 → 写入WebShell → 连接shell
一、通过into outfile 进行文件写入
利用条件:
- 拥有网站的写入权限
- 知道网站的绝对路径
- Secure_file_priv参数为空或可写目录(在mysql/my.ini中查看)
注:
Secure_file_priv是用来限制load dumpfile、into outfile、load_file()函数在哪个目录下拥有上传和读取文件的权限。在mysql 5.6.34版本以后 secure_file_priv的值默认为NULL。
- secure_file_priv的值为null ,表示限制mysqld 不允许导入|导出
- 当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下
- 当secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制
实际操作:
(1)查看secure-file-priv参数的值
show global variables like '%secure%';
(2)修改secure_file_priv 的值
windows下:修改my.ini 在[mysqld]内加入secure_file_priv =
linux下:修改my.cnf 在[mysqld]内加入secure_file_priv