一.前言

前面我们讲解了一下信息收集,本章节我们来讲解一下sql注入的基本原理,我们拿之前搭建的测试网站pikachu来测试,对应工具包也已经放在了工具里面,大家可以自行去下载。

SQL注入攻击漏洞的原因,是由于程序员在编写Web程序时,没有对客户端(比如浏览器等)提交的参数进 行严格的过滤和判断。用户可以修改参数或数据,并传递至服务器端,导致服务端拼接了伪造的SQL查 询语句,服务端连接数据库,并将伪造的sql语句发送给数据库服务端执行,数据库将sql语句的执行结 果,返回给了服务端,服务端又将结果返回给了客户端,从而获取到敏感信息,甚至执行危险的代码或 系统命令。简单来说就是:注入产生的原因是接受相关参数未经处理直接带入数据库查询操作。

二.简单示例

正常查询

构造sql注入语句,查询表中所有数据

xxx' or 1=1 #

查询结果:

看后台代码后分析

三.如何查找注入点位置

一句话简单概括就是:前端页面上所有提交数据的地方,不管是登录、注册、留言板、评论区、分页等 等地方,只要是提交数据给后台,后台拿着该数据和数据库交互了,那么这个地方就可能存在注入点。

四.通过浏览器直接注入测试

构造联合查询语句

正常语句:

        select id,username from member where username='vince';\

构造语句:

        select id,username from member where username='xxx' union select username,password from users #'

注意一点:union为联合查询,但是union后面的select查询的字段数量,必须和union前面的select查询 字段个数相同,这是union的特点,通过上面页面上的回显效果来看,我们暂且确定为两个字段,但是这样判 断字段个数是不对的,后面我们再详解。

五.通过burp注入测试

在burp中可以修改任意的请求参数,当然我们如果是get请求,我们就得先把内容进行一下url编码,再发送过去,这里就不给大家详细介绍url编码了当然空格的话我们可以用+代替,之后再发送请求看效果:

那这样的话,其实我们可以自己写很多的sql注入语句,然后放到某个文件中,充当我们的字典,然后在burp中配置使用一下这个字典文件数据,进行多个sql注入语句的发送测试。

六.常用的简单测试语句和注释符号说明

sql语句的注释符号也是sql注入语句的关键点:常用 # 、 -- 。

1、# 和 -- (有个空格)表示注释,可以使它们后面的语句不被执行。在url中,如果是get请求(记住是get请求),也就是我们在浏览器中输入的url ,解释执行的时候,url中#号是用来指导浏览器动作的,对服务器 端无用。所以,HTTP请求中不包括#,因此使用#闭合无法注释,会报错;而使用-- (有个空格),在传输过程 中空格会被忽略,同样导致无法注释,所以在get请求传参注入时才会使用--+的方式来闭合,因为+会被解释 成空格。

2.当然,也可以使用--%20,把空格转换为urlencode编码格式,也不会报错。同理把#变成%23,也不报错。

3.如果是post请求,则可以直接使用#来进行闭合。常见的就是表单注入,如我们在后台登录框中进行注入。

4.为什么--后面必须要有空格,而#后面就不需要? 因为使用--注释时,需要使用空格,才能形成有效的sql语句,而#后面可以有空格,也可以没有,sql就是这么规定的,记住就行了。 因为不加空格,--直接和系统 自动生成的单引号连接在了一起,会被认为是一个关键词,无法注释掉系统自动生成的单引号。

简单测试语句:

引号测试,加了引号如果报错,证明存在注入点

        单引号闭合数据:$query="select id,email from member where username='vince'"; 用 单引号测试,会报错,双引号测试查不到数据,不报错

        双引号闭合数据:$query='select id,email from member where username="vince"'; 用 双引号测试,会报错,单引号测试查不到数据,不报错

or 1=1 一个条件为真,即为真,真的效果就是查询到表中所有数据

where id=1 and 1=1 两个条件为真才为真,查询结果和不加1=1一样,and 1=2 一个条件为假,即为 假,查询条件为假,什么数据也没有,两个结合起来可以判断是否存在注入点。

union select 联合查询 # 关系型数据库 redis非关系型的是不能用union select的

七.总结

本章节我们讲解了一下sql注入的原理以及知识点,接下来就是讲解一下sql注入的分类啦,内容肯定会有点多,期待大家的点赞关注加收藏。

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

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

相关文章

C++智能指针详解:用法与实践指南

C智能指针详解:用法与实践指南 在C编程中,动态内存管理始终是开发者面临的重要挑战。手动分配和释放内存不仅繁琐,还容易因疏忽导致内存泄漏、悬垂指针等问题。为解决这些痛点,C标准库引入了智能指针(Smart Pointers&a…

fastdds qos:DurabilityQosPolicy

假如DataWriter先起来,并且已经写了一些数据,之后有新的DataReader起来,那么新起来的DataReader能不能接收到它启动之前,DataWriter发布的数据呢。DurabilityQosPolicy用来做这种控制。VOLATILE_DURABILITY_QOS:易失的…

【读代码】SQLBot:开源自然语言转SQL智能助手原理与实践

一、项目简介 SQLBot 是 DataEase 团队开源的自然语言转 SQL 智能助手,致力于让非技术用户也能通过自然语言与数据库对话,自动生成 SQL 查询,实现自助数据分析、智能BI问答、报表生成等场景。SQLBot 结合了大语言模型(LLM)、数据库元数据解析、SQL解析与执行等多项技术,…

开题报告被退回?用《基于大数据的慢性肾病数据可视化分析系统》的Hadoop技术,一次通过不是梦

💖💖作者:计算机编程小咖 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数…

HEVC(H.265)与HVC1的关系及区别

HEVC(H.265)与HVC1的关系及区别可归纳如下:一、技术定义差异‌HEVC(H.265)‌国际标准化组织制定的通用视频编码标准,由ITU-T和ISO/IEC联合开发‌1支持8K分辨率,压缩效率较H.264提升约50%‌1‌HV…

Java获取被nginx代理的emqx客户端真实ip

Java获取被nginx代理的emqx客户端真实ip 契机 ⚙ 使用nginx作为负载均衡(Load Balancing)的时候,发现真实ip无法获取。几经折腾终于拿到真实ip,又发现被代理的端口又无法使用非代理模式连接,由于之前暴露的docker端口有…

Jenkins自动化部署服务到Kubernetes环境

在现代软件开发中,持续集成和持续部署(CI/CD)已成为提高开发效率和软件质量的关键实践。本文将介绍如何使用Jenkins自动化部署服务到Kubernetes环境,并重点介绍Maven与私服的配置。 环境准备 在开始之前,请确保您已准备好以下环境: Jenkins服务器 Kubernetes集群 Docker镜…

OpenAI重新开源!gpt-oss-20b适配昇腾并上线魔乐社区

2025年8月5日,OpenAI发布了两款全新的开源权重语言模型,均为混合专家(MoE)架构,其规模设计可在消费级GPU和云端的多种硬件上高效运行。这些模型采用 Apache 2.0 许可协议,因此可用于蒸馏到其他推理模型中、…

SpringCloud入门(简洁明了)

目录 一.创建微服务项目 (一)环境准备 (二)项目结构图 (三)流程 二. Nacos (一)注册中心 1.服务注册 2.服务发现 3.编写微服务API 4.远程调用基本实现 5.负载均衡 6.LoadBalanced注解式注解均衡 7.注册中心宕机,远程调用还能成功吗 (二)配置中心 1.基…

集成算法学习笔记

一、集成算法简介1. 核心思想类比“多个专家综合判断优于单个专家”,通过构建并结合多个个体学习器,提升模型的泛化能力(降低过拟合风险、提高预测准确性),完成复杂的学习任务。2. 个体学习器与结合模块个体学习器&…

让Chrome信任自签名证书

让Chrome信任自签名证书(Unix系列OS) 背景 想在本地测试自己写的基于HTTPS连接的Web应用,跑在3001端口。但使用Chrome浏览器访问https://localhost:3001时显示连接不安全。解决了但没解决 使用mkcert一键创建证书: mkcert localho…

[江科大库]基于 OpenMV 的矩形识别与 STM32 串口通信(电子设计大赛实用教程)

🎯 基于 OpenMV 的矩形识别与 STM32 串口通信(电子设计大赛实用教程) 一、前言 在本科生电子设计大赛中,经常会遇到图像识别相关的任务,例如: 识别 矩形框(如识别一个 A4 纸、黑色标记框等); 将识别结果传输到 STM32 单片机,用于后续控制(舵机、移动小车、机械臂…

人脸识别驱动的工厂人体属性检测与预警机制

人体属性检测:人脸识别智慧检测驱动的工厂管理革新(所有图片均为真实项目案例)在制造业数字化转型浪潮中,人体属性检测技术已成为破解传统工厂管理难题的核心工具。通过融合人脸识别智慧检测、目标检测算法与多模态数据分析&#…

数据工程师——ETL

ETL面试题01 一、基础概念与理论类 1. 请解释什么是 ETL?它在数据处理流程中扮演什么角色? 答:ETL就是数据抽取、转化、加载。目的是将分散的数据源集中在一起进行处理分析。 数据抽取:是指各种数据源中抽取数据,包括关系型数据库(MySQL、Oracle等)、日志文件、Exce…

Oracle APEX 经典报表中的Checkbox

目录 1. 建表&投入测试数据 2. 经典报表做成 2-1. 画面布局如下​编辑 2-2. 报表使用的SQL 2-3. RS列的Heading设定 2-4. Function and Global Variable Declaration 2-5. Execute when Page Loads 2-6. Process 3. 运行效果​编辑 1. 建表&投入…

Codeforces Round 1043 (Div.3)

比赛连接:Codeforces Round 1043 (Div.3) A. Homework 题目链接:A - Homework Vlad and Dima have been assigned a task in school for their English class. They were given two strings aaa and bbb and asked to append all characters from bbb …

GPS欺骗式干扰的产生

我们在GNSS抗干扰天线的选型、测试方法以及为什么不能做RTK?(抗干扰内容全集)中提到的抗干扰天线,针对的是GPS压制式干扰。对于GPS欺骗式干扰,抗干扰天线是无能为力的。 简单来说,压制式干扰是通过发射强功…

[PV]AXI R/W/RW带宽计算的tcl脚本

AXI R/W/RW带宽计算的tcl脚本 我基于前述的axi_read_bw_per_id.tcl脚本进行了修改,使其支持: 读通道(Read Channel):计算基于rvalid && rready的有效周期(已在前述实现)。 写通道(Write Channel):计算基于wvalid && wready的有效周期,考虑wstrb的ac…

阿里云AnalyticDB同步数据至华为云taurusdb

1 概述 AnalyticDB和taurusdb都是高度兼容mysql协议的数据库,从现有的AnalyticDB官方数据同步方案来看,只有FlinkSQL合适。 同步方案官方文档: https://help.aliyun.com/zh/analyticdb/analyticdb-for-mysql/user-guide/flink-subscribes-b…

学习嵌入式之驱动——系统移植(二)

一、uboot常用命令与环境变量1.命令:(1)环境变量操作命令命令功能格式printenv 查看环境变量printenvsetenv新建/修改环境变量setenv 环境变量名 环境变量值saveenv保存环境变量saveenv(2)内存操作命令命令功能格式示例…