多种类型SQL注入
前言
发现MYSQL手注注入方式用得多了,几乎都快忘记其它数据库注入的方式了,这里不讲绕过姿势和写shell,毕竟网上很多前辈都给了方法,我只讲一些基本的注入方式(只是记录一下各自的特性,记下来方便以后参考回忆。)
MYSQL数据库
从5.0以后,就有information_schema自带库,通过它可以注入查询想要的数据
只有两个字段和单引号闭合的情况下
?id=1' and 1=2 union select 1,table_name from information_schema.tables where table_schema=database()%23
tables 自带库中的一个表
table_name 是该表的一个字段名
%23 是#的url编码,#注释是MySQL特有的注释符,--注释是通用于大多数据库
key_column_usage、schemata、columns表等

通过它也能获取想要的数据,一般来说输出长度和数量都有限制,可以分页查询limit来读取数据
获取数据库名

获取表名

获取字段名

MSSQL数据库
一样的思路,判断是否存在注入,猜字段数,联合查询得到输出点,才开始查数据
需要注意的是:
1.联合查询时使用union all ,这点与MySQL有点区别的。
2.才输出点占位填充时,当不确定它每个位置的数据类型,使用NULL填充;否则数据类型要一一对应起来。
3.注释符就只有--
重点来了:
1.表master.dbo.sysdatabases(master系统库)
select name from master.dbo.sysdatabases
name为字段名,查询数据库名(没有database()函数)
2.表dbo.sysobjects
select name from dbo.sysobjects where xtype='U'
name为字段名,,查询表名(当前库下的dbo.sysobjects表记录着,U表示用户库,S表示系统库)
3.表dbo.syscolumns
select name from dbo.syscolumns where id=value
name为字段名,id为字段名(记录表的id),所以在查表名是应该查它的id,当要查字段名是要通过id查找,表名行不通的,查数据时才要用到表名
Access数据库
它并没有自带库,只能猜测表名的方式,获取数据
比如:and exists(select*from admin)
方法很多,不止一种
当get到表名后,而无法猜到字段名时,可以通过偏移注入方式获取数据;
同样,当其他类型数据库权限不够而无法查询通过查询自带库获取信息,可以通过这种偏移注入方法获取数据
Oracle数据库
接触这类型的很少,不熟悉
查数据库版本
select banner from sys.v_$version where rownum=1
查询表名
select table_name from user_tables where rownum=1
user_tables为当前用户的表
查字段名
select column_name from user_tab_columns where table_name=表名 and rownum=1
user_tab_columns当前用户的字段表
查第二个字段名
select column_name from user_tab_columns where table_name=表名 and column_name<>查到的第一个字段名 and rownum=1
oracle数据库可以参考https://www.freebuf.com/column/174974.html
多种类型SQL注入的更多相关文章
- 类型SQL注入实验 Part1
准备为PHPstudy环境 <?php $id = $_GET['t']; $conn = mysql_connect("127.0.0.1","root" ...
- 《Web安全攻防渗透测试实战指南》 各类型 SQL注入 实验过程整理
Union注入 https://www.jianshu.com/p/8a11bf55aaee Boolean注入 https://www.jianshu.com/p/e4086f59812d 报错注入 ...
- 转:PHP中防止SQL注入的方法
[一.在服务器端配置] 安全,PHP代码编写是一方面,PHP的配置更是非常关键. 我们php手手工安装的,php的默认配置文件在 /usr/local/apache2/conf/php.ini,我们最 ...
- php防止SQL注入详解及防范
SQL 注入是PHP应用中最常见的漏洞之一.事实上令人惊奇的是,开发者要同时犯两个错误才会引发一个SQL注入漏洞一个是没有对输入的数据进行过滤(过滤输入),还有一个是没有对发送到数据库的数据进行转义( ...
- php防止sql注入的方法(转)
[一.在服务器端配置] 安全,PHP代码编写是一方面,PHP的配置更是非常关键. 我们php手手工安装的,php的默认配置文件在 /usr/local/apache2/conf/php.ini,我们最 ...
- SQL注入是什么?如何防止?
SQL注入是什么?如何防止? SQL注入是一种注入攻击,可以执行恶意SQL语句.下面本篇文章就来带大家了解一下SQL注入,简单介绍一下防止SQL注入攻击的方法,希望对大家有所帮助. 什么是SQL注入? ...
- SQL注入学习(一)
注入攻击的本质:web应用程序没有过滤用户输入或过滤不严谨,直接把用户输入的恶意数据当做代码执行 两个条件: 1.用户能够控制输入 2.原本程序要执行的代码,拼接了用户输入的数据 注入类型 SQL注入 ...
- sql注入解析
sql注入解析 sql注入解析(一)基本语法 sql注入解析(二)执行注入 sql注入解析(三)数据库类型 sql注入解析(四)避开过滤
- web应用程序安全攻防---sql注入和xss跨站脚本攻击
kali视频学习请看 http://www.cnblogs.com/lidong20179210/p/8909569.html 博文主要内容包括两种常见的web攻击 sql注入 XSS跨站脚本攻击 代 ...
随机推荐
- WFP之WFP简介
·过滤引擎是WFP的核心组成部分,过滤引擎分为两大层:用户态基础过滤引擎和内核态过滤引擎.基础过滤引擎会与内核过滤引擎交互.·内核态过滤引擎是整个过滤引擎的主体,内部分为多个分层,每分层都代表着网络协 ...
- asp.net数据库增删改查demo
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- 基于云开发开发 Web 应用(三):云开发相关数据调用
介绍 在完成了 UI 界面的实现后,接下来可以开始进行和云开发相关的数据对接.完成数据对接后,应用基础就打好了,接下来的就是发布上线以及一些小的 feature 的加入. 配置 在进行相关的配置调用的 ...
- NumPy 数组迭代
章节 Numpy 介绍 Numpy 安装 NumPy ndarray NumPy 数据类型 NumPy 数组创建 NumPy 基于已有数据创建数组 NumPy 基于数值区间创建数组 NumPy 数组切 ...
- Spring 控制反转容器(Inversion of Control – IOC)
系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of Contro ...
- java 实体 set数据 报空指针异常
今天在做一个调用阿里云AXB隐私保护,需要调用通话记录的消费队列,然后set到实体中,然后插入到数据库,但是set的这一步报错 以为工具拿不到值,然后打印发现是有值的, 然后再看一下实例的类型是没错的 ...
- 基础语法-其它流程控制语句break和continue
基础语法-其它流程控制语句break和continue 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.break语句 /** * break语句 * @author 尹正杰 * ...
- PWC6199:Generated servlet error:Only a type can be imported. org.apache.jasper.tagplugins.jstl.core.ForEach resolves to a package
<%@ import="org.apache.jasper.tagplugins.jstl.core.ForEach"%> 去掉这条语句,就不报错了.所以问题就出在这里 ...
- 安装swoole redis异步 hiredis swoole扩展加载失败 或者不显示问题 解决办法
当前办法仅供参考 贴上报错 找了好久 根据网上办法也试了 没解决 最后 仔细读问题 觉得可能是 hiredis路径问题 终于解决了 解决办法: 进入你的安装包目录然后执行下面 mkdir /usr/l ...
- offsetof宏与container_of宏
offsetof宏与container_of宏1.由结构体指针进而访问各元素的原理(1)通过结构体整体变量来访问其中各个元素,本质上是通过指针方式来访问的,形式上是通过.的方式来访问的(这个时候其实是 ...