如何判断注入点传参类型--理论

news2024/11/23 2:00:03

注入点传参类型

在我们找到注入点后,首先要判断传参的类型,才能以正确的形式向数据库查询数据。

注入点传参一般分为数字型和字符型。

数字型:当传入的参数为整形时,存在SQL注入漏洞,就可以认为是数字型注入。
字符型:当传入的参数需要引号闭合才能查询时,可以认为是字符型注入。

例如数字型语句:select * from table where id =3
则字符型如下:select * from table where name=’admin’

如何判断传参类型?

我们以sqli-labs的题目为例:

单引号闭合

要我们传入参数id,且参数值为数字:
在这里插入图片描述

我们传参?id=1,搜索到了相应的数据:
在这里插入图片描述

说明我们输入的数据被拼接到SQL查询语句中,在数据库中进行了查询。
如果注入点传参是数字型,根据页面回显猜测一下后端的查询语句:

SELECT name,Password FROM <表名> WHERE id=<我们输入的参数值>;

我们输入数字,该语句就把我们输入的 1 带入到<我们输入的参数值>位置进行了查询。

同样,如果注入点传参是字符型,该查询语句也可能是这样的:

--双引号闭合
SELECT name,Password FROM <表名> WHERE id="<我们输入的参数值>";

--单引号闭合
SELECT name,Password FROM <表名> WHERE id='<我们输入的参数值>';

这样的语句,我们输入整形数 1 ,后端是把 1 用引号包围起来再带入查询语句查询的。

根据可能存在的这几种传参形式,我们采用以下步骤进行测试:

在输入的整形数 1 后面增加单引号 '

如果是单引号闭合,那么语句就会变成:
SELECT name,Password FROM <表名> WHERE id='1'';
我们输入的单引号与前面的单引号组合,导致后面多出了一个单引号,就会导致 后面引号未闭合的错误,从而查询失败,页面报错。

如果是双引号闭合,那么语句是:
SELECT name,Password FROM <表名> WHERE id="1'";
双引号与双引号闭合,我们输入的 1' 被带入数据库查询,且可以匹配到 id=1 的行,查询成功。

如果是数字型传参,那么语句是:
SELECT name,Password FROM <表名> WHERE id=1';
后面多出了一个单引号,导致 引号未闭合的错误,从而查询失败,页面报错。

我们输入?id=1',发现报错:

''1'' LIMIT 0,1' at line 1

也就是 '1'' LIMIT 0,1 处发生了错误,可见是我们输入的 1' 导致后面的单引号未能闭合,说明这里是单引号闭合。

在这里插入图片描述所以后端SQL查询语句应该是:

SELECT name,Password FROM <表名> WHERE id='<我们输入的参数值>' LIMIT 0,1;

如果我们输入?id=1' --+,利用 --+ 将后面的语句注释掉。
语句就变成了:

SELECT name,Password FROM <表名> WHERE id='1' --+' LIMIT 0,1;

有效部分:
SELECT name,Password FROM <表名> WHERE id='1';

查询又能成功进行。
成功判断出注入点类型为单引号闭合的字符型

整型闭合

在输入的整形数 1 后面增加单引号 '

如果是整型闭合,那么语句就会变成:
SELECT name,Password FROM <表名> WHERE id=1';
后面多出了一个单引号,导致 引号未闭合的错误,从而查询失败,页面报错。

在输入的整形数 1 后面增加双引号 "

如果是整型闭合,那么语句就会变成:
SELECT name,Password FROM <表名> WHERE id=1";
后面多出了一个双引号,导致 引号未闭合的错误,从而查询失败,页面报错。

所以如果是整型闭合,我们在后面加引号都会导致报错。

添加双引号报错:
在这里插入图片描述添加单引号报错:
在这里插入图片描述
说明是整形闭合。

单引号+括号闭合

当我们测试是否为单引号闭合时,报错如下:
在这里插入图片描述
我们猜测后端查询语句如下:

SELECT <字段名> FROM <表名> WHERE id=('<参数>');

因此当我们输入 1’ 后语句变成:

SELECT <字段名> FROM <表名> WHERE id=('1'');

导致多出了单引号 ’ 无法闭合,产生错误。

所以我们传参 1’) 并注释掉后面的语句:

SELECT <字段名> FROM <表名> WHERE id=('1')--+');

成功闭合,查询成功。

单引号+单括号闭合 的情况下,
输入的参数以单引号’ 和 ')闭合时,都会导致后面的符号不能闭合而报错。
输入整型数 和 双引号" 则可以带入数据库成功查询。

对双引号+单括号 ") 同理。
同样的,SQL查询中还存在 引号+多重括号 。

判断方法是:
先判断引号的类型是单引号还是双引号。
然后在外层加括号并注释后面的语句,能成功查询的就是正确的闭合方式。

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

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

相关文章

01_初识GeoParquet数据集

概述 GeoParquet是一种用于存储地理空间数据的文件格式&#xff0c;基于Apache Parquet。它支持高效地存储和查询大型地理空间数据集&#xff0c;具有良好的压缩性能和**列式**存储结构。GeoParquet还与许多地理信息系统&#xff08;GIS&#xff09;和大数据处理工具兼容&#…

SAP B1 登陆报错解决方案 - 系统架构目录服务器选择

背景 登录时出现如下报错&#xff0c;报错显示为【系统架构目录服务器选择】 强行登录会发现过往账套都不见了 出现原因 出于各种原因在开机时没有把 SAP 所有的服务成功启动&#xff08;上一次启动科学上网后全局代理没关干净之类的&#xff09;。 解决方案 关机几分钟重启…

037集——JoinEntities连接多段线polyline和圆弧arc(CAD—C#二次开发入门)

如图&#xff1a;最终效果 polyline连接&#xff1a; 代码如下&#xff1a; public void joinentities() {Curve pLine Z.db.SelectEntities<Curve>().First().Clone() as Curve;pLine.ChangeEntityColor(1);Curve pLine1 Z.db.SelectEntities<Curve>().First()…

【划分型 DP-约束划分个数】【hard】【阿里笔试】力扣1278. 分割回文串 III

给你一个由小写字母组成的字符串 s&#xff0c;和一个整数 k。 请你按下面的要求分割字符串&#xff1a; 首先&#xff0c;你可以将 s 中的部分字符修改为其他的小写英文字母。 接着&#xff0c;你需要把 s 分割成 k 个非空且不相交的子串&#xff0c;并且每个子串都是回文串…

如何使用 Vivado 从源码构建 Infinite-ISP FPGA 项目

如约介绍源码构建 Infinite-ISP 项目&#xff0c;其实大家等的是源码&#xff0c;所以中间过程简洁略过&#xff0c;可以直接翻到文末获取链接。 开源ISP&#xff08;Infinite-ISP&#xff09;介绍 构建工程 第一步&#xff0c;从文末或者下面链接获取源码 https://github.com/…

JDK、MAVEN与IDEA的安装与配置

1.认识JDK、MAVEN与IDEA JDK 提供了编译和运行Java程序的基本环境。Maven 帮助管理项目的构建和依赖。IDEA 提供了一个强大的开发环境&#xff0c;使得编写、调试和运行Java程序更加高效。 2. 安装与环境配置 2.1 官网地址 选择你需要的版本下载&#xff1a; MAVEN下载传送…

八股(6)——MySQL(概念相关)

八股&#xff08;6&#xff09;——MySQL&#xff08;概念相关&#xff09; 4.2 MySQLMySQL 基础关系型数据库介绍ACIDMySQL 介绍 MySQL 基础架构MySQL 存储引擎MySQL 存储引擎架构了解吗&#xff1f;MySQL 支持哪些存储引擎&#xff1f;默认使用哪个&#xff1f; MySQL索引什么…

CTF--php伪协议结合Base64绕过

Base64绕过 在ctf中&#xff0c;base64是比较常见的编码方式&#xff0c;在做题的时候发现自己对于base64的编码和解码规则不是很了解&#xff0c;并且恰好碰到了类似的题目&#xff0c;在翻阅了大佬的文章后记录一下&#xff0c;对于base64编码的学习和一个工具 base64编码是…

可视化建模与UML《活动图实验报告》

你当像鸟飞往你的山。 一、实验目的&#xff1a; 1、熟悉活动图的基本功能和使用方法。 2、掌握使用建模工具软件绘制协作图的方法 二、实验环境&#xff1a; window7 | 10 | 11 EA15 三、实验内容&#xff1a; <1>绘制学生选课系统中添加课程(Add Course)用例的活动图…

Spring Cloud Alibaba、Spring Cloud 与 Spring Boot各版本的对应关系

参考spring-cloud-alibaba github wiki说明&#xff1a;版本说明 下面截取说明&#xff1a; 2022.x 分支 2021.x 分支 2.2.x 分支 组件版本关系

基于Java Springboot大学校园旧物捐赠网站

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 数据…

基于Java Springboot未央商城管理系统

一、作品包含 源码数据库设计文档万字全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA 数据库&#xf…

小米路由器用外网域名访问管理界面

本文在Redmi AX3000 (RA81)设置&#xff0c;其他型号路由器的管理界面端口可能各不相同。 开始之前需要保证路由器SSH功能正常&#xff0c;如果没有SSH可以参考这里。 1. 给WAN口开放80端口 可以通过下载mixbox的firewall插件或者其他防火墙插件开放端口。 2. 把域名解析到路…

ant-design-vue中table组件多列排序

antD中table组件多列排序 使用前注意实现效果图实现的功能点及相关代码1. 默认按某几个字段排序2. 点击排序按钮可同时对多个字段进行排序3. 点击重置按钮可恢复默认排序状态。 功能实现完整的关键代码 使用前注意 先要确认你使用的antD版本是否支持多列排序&#xff0c;我这里…

Linux开发工具:Vim 与 gcc,打造高效编程的魔法双剑

文章目录 一、初识Vim模式 二、vim基本操作2.1基础操作2.2命令模式/正常模式2.2.1光标定位2.2.2复制粘贴、删除2.2.3撤销2.2.4替换字符2.2.5替换模式 2.3底行模式2.3.1退出vim和**保存文件**2.3.2定位文本字符串2.3.3命令2.3.4实现分屏2.3.5替换指定字符串 2.4补充指令2.4.1视图…

算法.图论-习题全集(Updating)

文章目录 本节设置的意义并查集篇并查集简介以及常见技巧并查集板子(洛谷)情侣牵手问题相似的字符串组岛屿数量(并查集做法)省份数量移除最多的同行或同列石头最大的人工岛找出知晓秘密的所有专家 建图及其拓扑排序篇链式前向星建图板子课程表 本节设置的意义 主要就是为了复习…

云原生之k8s服务管理

文章目录 服务管理Service服务原理ClusterIP服务 对外发布应用服务类型NodePort服务Ingress安装配置Ingress规则 Dashboard概述 认证和授权ServiceAccount用户概述创建ServiceAccount 权限管理角色与授权 服务管理 Service 服务原理 容器化带来的问题 自动调度&#xff1a;…

Atomic原子操作类详解

Atomic原子操作类介绍 在并发编程中很容易出现并发安全的问题&#xff0c;有一个很简单的例子就是多线程更新变量i1,比如多个线程执行i操作&#xff0c;就有可能获取不到正确的值&#xff0c;而这个问题&#xff0c;最常用的方法是通过Synchronized进行控制来达到线程安全的目…

随手记: vue监听路由

随手记&#xff1a;没空记详细 newVal,oldVal 可以查看到最新路由和上一条路由详细 watch: {$route: {handler(newVal,oldVal) {console.log(newVal, oldVal)if(oldVal.path /organization/serviceManagement/list) {if(this.cacheId ! newVal.query.id) {this.cacheId newV…

AndroidStudio与开发板调试时连接失败或APP闪退的解决方案,涉及SELINUX及获取Root权限

现象 用AndroidStudio打开工程代码,点击运行后,报错: 解决方案 具体原因是尝试运行 su(通常用于获取超级用户权限)时失败了,提示 “Permission denied” 通过 CONFIG_SECURITY_SELINUX 变量控制 SElinux 开启或关闭 在vim /rk3568_android_sdk/device/rockchip/rk…