第五十四天(SQL注入数据类型参数格式JSONXML编码加密符号闭合复盘报告)

#SQL注入产生原理:

代码中执行的SQL语句存在可控变量导致

#常见SQL注入的利用过程:

1、判断数据库类型

2、判断参数类型及格式

3、判断数据格式及提交

4、判断数据回显及防护

5、获取数据库名,表名,列名

5、获取对应数据及尝试其他利用

#黑盒/白盒如何发现SQL注入

1、盲对所有参数进行测试

2、整合功能点脑补进行测试

白盒参考后期代码审计课程

利用过程:

获取数据库名->表名->列名->数据(一般是关键数据,如管理员)

案例说明:

在应用中,存在参数值为数字,字符时,符号的介入,另外搜索功能通配符的再次介入,另外传输数据可由最基本的对应赋值传递改为更加智能的XML或JSON格式传递,部分保证更安全的情况还会采用编码或加密形式传递数据,给于安全测试过程中更大的挑战和难度。

#数字,字符,搜索

例:

select * from news where id=$id; //数字

select * from news where name='$name'; //这种是字符串

select * from news where name like '%name%'; //这种实现查找功能的,%这个是通配符,和Windows*是一样的,就是搜索时

符号干扰:要考虑接收的参数的类型是什么,有无单引号或双引号及通配符等,有就要对其进行闭合,不然写的攻击语句不会生效

直接让ai写一个带有搜索功能的页面

输入一个1时显示 新闻标题1

判断原始查询结果集的列数,要先对 %’ 进行闭合 ,这里是3列

判断回显位置

查询当前数据库名 union select 1.database(),3

查询当前数据库的所有表名 -1%' union select 1,2 ,group_concat(table_name) from information_schema.tables where table_schema='news_db' #

根据当前书库和表名查询, 表中的字段名

 -1%' union select 1,2 ,group_concat(column_name ) from information_schema.columns where table_name='admin' and table_schema='news_db' #

根据表名查询里面的字段名,对应的所有值

流程:

order by 3 判断原始查询结果集的列数

union select 1,2,3 回显位置

union select 1.database(),3 知道数据库名:database() news_db

获取数据库名下的表名信息:

借助自带的information_schema.tables表(记录所有数据库名下的表名)

 -1%' union select 1,2 ,group_concat(table_name) from information_schema.tables where table_schema='news_db' #

admin下列名

借助自带的information_schema.columns表(记录所有数据库名下的表名对应的列名信息)

 -1%' union select 1,2 ,group_concat(column_name ) from information_schema.columns where table_name='admin' and table_schema='news_db' #

知道表中的字段名后,根据字段名和要查询的表,或去里面的值(数据)

 -1%' union select 1,group_concat(username),group_concat(password)from admin #

表结构:

 admin

 username,password

XML,JSON,编码,混合 等格式

XML

<?xml version="1.0" encoding="UTF-8"?>
<news>
    <article>
        <id>1</id>
        <title>xiaodi</title>
        <content>i am xiaodi</content>
       <created_at>2025-03-07</created_at>
    </article>
    <article>
        <id>2</id>
        <title>xiaodisec</title>
        <content>i am xiaodisec</content>
        <created_at>2025-03-06</created_at>
    </article>
</news>

 burp抓包,查看数据格式

修改参数值,参数值在下面修改;后续操作就和上面的一样

JSON:

{
    "news:"[
        {
            "id": 1,
            "title": "xiaodi",
           "content": "i am xiaodi",
           "created_at": "2025-03-07"
        },
 
        {
            "id": 2,
            "title": "xiaodisec",
            "content": "i am xiaodisec",
            "created_at": "2025-03-06"
        }
    ]
}

 开启burp拦截,在页面中搜索框中输入一个值,然后查看burp抓到的数据内容,可以看到提交的格式是json,传的参数值在下面

将数据包转到repeater中,因为这个是搜索框的内容,所以先对 %’ 进行 闭合 ,再写语句, 写完语句之后,写一个# ,将后面的语句注释掉 ;这里是判断列数,三列正常,说明列数是大于等于三的

输入4列时,内容显示不正常,说明是三列

后面的操作都是一样的

如果用json格式发送payload时,被过滤或拦截了(waf),那么可以尝试修改成xml等格式,进行发送,尝试绕过,是否成功主要看对方是否接收这个格式和是否对修改的格式进行过滤等;

也有只接收json格式数据的,当格式不对时,无法正常接收数据,攻击语句也就没用了

Base64: (base64+json)

{
    "news": [
        {
            "id": "MQ==",
           "title": "eGlhb2Rp",
            "content": "aSBhbSB4aWFvZGk=",
            "created_at": "MjAyNS0wMy0wNw=="
       },
       {
           "id": "Mg==",
            "title": "eGlhb2Rpc2Vj",
            "content": "aSBhbSB4aWFvZGlzZWM=",
            "created_at": "MjAyNS0wMy0wNg=="
        }
    ]
}

 通过修改参数值,查看哪个数据有变动

修改参数值,可以看到只有keyword 的值在改变,因为这里是已知base64 编码;如果看到的是一些很乱的数据,不符合已知的加密类型或编码格式时,就要去看js数据包中,有没有写加密的算法了(因为在抓包时数据就被加密了,所以加密是在前端就完成了;因为html的算法无法实现加密,所以大部分是在js代码中);发送数据包测试时,要按照它的编码或加密 以及格式去发送,不然对方无法正常处理发送过去的数据,那么就无法知道这里是否存在注入点;所以当数据被加密或编码时,要先找到它的加密方法和编码格式等,然后按照对方接收的格式和将测试数据进行加密后发送,才能顺利进入逻辑,对方才能进行解密和解码

写的时候要注意单引号是否是英文的,还是中文的,不要写错了

判断列

用帽子对数据进行base64 编码后再发送数据进行测试

1、数据传输采用XML或JSON格式传递

2、数据传输采用编码或加密形式传递 ;先看特征,如果符合就先测试看看,如果不行就再找代码查看

3、数据传递采用JSON又采用编码传递

#实例应用:

编码注入案例:

互联网搜下对应说明

实战 || 记一次某项目中奇怪的SQL注入漏洞

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

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

相关文章

VMWare上搭建Hive集群

文章目录1. MySQL安装2. 安装Hive集群3. 使用Hive客户端4. 实战总结本实战在VMware上搭建Hive集群&#xff0c;集成MySQL作为元数据存储&#xff0c;完成Hive环境配置、元数据初始化及HDFS仓库目录创建&#xff0c;实现Hive on Hadoop的SQL查询能力&#xff0c;为大数据分析提供…

Android网络之WIFI技术网络模型概述

文章目录术语1、WLAN与WIFI2、802.11 WIFI无线网络标准演进3、WIFI5、WIFI6和WIFI7的最高速率对比4、WIFI网络中的各个角色&#xff08;元件&#xff09;1&#xff09;网络拓扑架构图5、802.11权威指南1&#xff09;OSI与TCP/IP2&#xff09;IEEE 802.11协议簇介绍3&#xff09…

游戏中的设计模式——第三篇 简单工厂模式

5. 简单工厂模式 5.1 简单工厂模式的定义 简单工厂模式的核心是定义一个创建对象的接口&#xff0c;将对象的创建和本身的业务逻辑分离&#xff0c;降低系统的耦合度&#xff0c;使得两个修改起来相对容易些&#xff0c;当以后实现改变时&#xff0c;只需要修改工厂类即可。 5.…

基于SVN搭建企业内部知识库系统实践

一、准备工作 CentOS 7 服务器&#xff1a;确保你有 root 或 sudo 权限&#xff0c;可以访问该服务器。Windows 客户端&#xff1a;你将需要在 Windows 上安装 TortoiseSVN 客户端来与 SVN 服务器交互。防火墙&#xff1a;确保你的防火墙已开放 3690 端口&#xff0c;用于 SVN…

SQL注入7----(盲注与回显)

一.前言 在我们的注入语句被带入数据库查询但却什么都没有返回的情况我们该怎么办&#xff1f;例如应用程序就会返回 一个"通用的"的页面&#xff0c;或者重定向一个通用页面&#xff08;可能为网站首页&#xff09;。这时&#xff0c;我们之前学习的SQL注入办 法就…

尚硅谷宋红康JVM全套教程(详解java虚拟机)

https://www.bilibili.com/opus/1071553679925968898 案例7&#xff1a;日均百万订单系统JVM参数设置 https://github.com/wei198621/jvm_by_atguigu https://github.com/xftxyz2001/atguigu-jvm/blob/main/JavaYouthdocsJVM/%E7%AC%AC1%E7%AB%A0-JVM%E4%B8%8EJava%E4%BD%…

鸿蒙NEXT开发实战:图片显示、几何图形与自定义绘制详解

探索HarmonyOS NEXT强大的图形渲染能力&#xff0c;从图片展示到自定义绘图 HarmonyOS NEXT作为华为自主研发的操作系统&#xff0c;为开发者提供了一套丰富而强大的图形渲染能力。无论是显示图片、绘制几何图形&#xff0c;还是实现复杂的自定义绘图&#xff0c;鸿蒙都提供了简…

python + Flask模块学习 2 接收用户请求并返回json数据

用到的模块还是flask&#xff0c;用到的类有Flask&#xff0c; request&#xff0c; jsonfiy &#x1f642; 目录 1、GET请求 2、POST请求 1、表单格式 2、json格式 就酱&#xff0c;也比较简单&#xff0c;下一篇说简单的授权&#xff0c;简单来说就是比如用户付费买了服…

国内外常用的免费BUG管理工具选型

帮助用户根据自身情况做决定&#xff0c;比如团队规模、技术能力、是否需要移动端支持等。避免只是罗列工具&#xff0c;而是提供实际选择的维度。 国内外常用的免费BUG管理工具选择非常丰富&#xff0c;从轻量级到功能全面型都有覆盖。我将它们分为几类&#xff0c;并详细介绍…

JavaScript的事件循环机制

1.事件循环的理解JavaScript是单线程的&#xff0c;意味着它一次只能执行一个任务。而事件循环就是去协调在JavaScript环境中运行的同步任务、异步任务(微任务、宏任务)的执行顺序的一种机制。它是 JavaScript 实现单线程非阻塞异步执行的核心。2.事件循环的执行顺序同步任务—…

数据结构——栈(Java)

目录 一定义. 入栈 出栈 二.栈与线性表的关系 三.栈的实现方式 四.链表实现栈 1.结点的API设计 2.栈的API设计 2.1栈的初始化设计 2.2元素入栈 2.3元素出栈 五.括号匹配问题 完整代码展示 答案 一定义. 栈是一种基于先进后出&#xff08;FILO&#xff09;的数据…

科研笔记:数学建模启发的课题研究方法

借鉴数学建模的思路解决科学问题或开展课题研究&#xff0c;核心是将实际问题抽象为数学框架&#xff0c;通过定量分析、逻辑推演和验证优化&#xff0c;实现对问题的精准描述、解释或预测。其本质是“从现实到数学&#xff0c;再从数学回归现实”的迭代过程&#xff0c;适用于…

Agent落地到底选择LangChain 还是 LangGraph

核心概念 LangChain:一个用于构建由大型语言模型驱动的应用程序的框架。它提供了大量的组件和现成的链,旨在简化和标准化应用程序与LLM交互的过程。 LangGraph:一个用于在LangChain之上构建有状态、多参与者的 工作流 的库。它特别擅长处理具有循环、分支和复杂协调的代理(…

ChatGPT下的相关聊天提示词

问&#xff1a;如果我觉得一个子对话里&#xff0c;聊天聊得太多&#xff0c;在这个项目下新开一个子对话&#xff0c;但是不想把上次太多的信息 都复制过来&#xff0c;有没有什么办法关键词&#xff1a;项目、子对话&#xff0c;上下文ChatGPT:有办法的 ✅在 ChatGPT 里&…

最新PDF版本!Acrobat Pro DC 2025,解压即用版

软件介绍 Adobe Acrobat Pro DC 2025 是全球知名的 PDF 编辑神器&#xff0c;被称为 “最牛 PDF 工具”&#xff0c;能轻松解决 PDF 编辑、创建、转换等难题&#xff0c;本次分享的版本解压即可使用。 软件特点 然解压即可使用不用登录注册最新版本 软件使用 我们打开软件选…

XX汽集团数字化转型:全生命周期网络安全、数据合规与AI工业物联网融合实践

引言&#xff1a;数字化转型中的安全与效率双轮驱动作为中国汽车行业的龙头企业&#xff0c;XX汽集团近年来积极推进数字化转型&#xff0c;通过构建全生命周期网络安全体系、完善数据合规治理框架&#xff0c;并深度融合AI工业物联网技术&#xff0c;实现了生产成本显著降低和…

云原生部署_Docker入门

Docker是啥Docker是一个开源的容器化平台&#xff0c;可以帮助开发者将应用程序和其依赖的环境打包成一个可移植、可部署的容器。Docker的主要目标是通过容器化技术&#xff0c;实现应用程序的快速部署、可移植性和可扩展性&#xff0c;从而简化应用程序的开发、测试和部署过程…

【大数据专栏】大数据框架-Apache Druid Overview

目录 Architecture Advantages and disadvantages 从架构以及设计可以得出结论&#xff0c;Durid不支持ACID事务&#xff0c;基于时间戳列和维度列去查询&#xff0c;所以适合基于时间做分组和学列的查询操作。 Advantages优势&#xff1a; 实时数据摄取与查询 支持秒级数据摄…

云平台面试内容(一)

1. 云计算的优点、服务模型区别及云部署模式 云计算优点: 云计算具有显著的优势,包括无需自建机房和硬件投入,资源即开即用并支持弹性伸缩,按需付费使成本透明可控。企业可以在数分钟内完成全球范围的部署,缩短上线周期。同时云平台提供高可用性和安全性,多副本容灾保证数…

嵌入式 - 硬件:51单片机(2)

本节重点&#xff1a;1. GPIO输入模式、输出模式2. 按键工作原理&#xff08;GPIO输入&#xff09;3. 中断概念4. 中断源概念、中断源个数、哪几个中断源5. 外部中断、定时器中断概念6. 中断处理流程&#xff1a;7. 51单片机中定时器的个数&#xff1f;类型8. 16位定时器和8位…