首先webshell上传就是利用MySQL的文件读写注入而实现,要想上传webshell就得了解文件读写注入的原理。文件读写注入就是利用文件的读写权限进行注入,它可以写一句话木马,也可以读取文件系统的敏感信息。
文件读写注入的条件:
1.高版本的MYSQL添加了一个新的特性secure_file_priv,该选项限制了mysql导出文件的权限,所以该选项为可以=‘“”/=一个路径,不能为NULL,secure_file_priv=“” 代表文件读写没有限制,secure_file_priv=一个路径,代表只能对该路径下文件进行读写,而secure_file_priv=NULL 代表不能对文件进行读写。
2.你得知道网站得绝对路径,才能对其进行读写。
3.你必须是root用户或者拥有相应权限得用户才能执行outfile操作。
简单点说就是 1.select into outfile方法可用(允许导出文件) 2.我们需要知道网站所在的绝对路径 3.我们要有足够的权限
实战演练(使用sqli-labs less-2靶场):
1.首先通过注入发现用户为root
2.上传路径为E:\APP\phpstudy\phpstudy_pro\WWW\1.txt
报错内容:MySQL 服务器正在以 --secure-file-priv 选项运行,因此无法执行此语句。
经过查看我的MySQLsecure_file_priv=NULL,所以不能上传。
修改mysql.ini文件
添加secure_file_priv=
重新上传
成功