SQL 注入漏洞(十三)base64注入

本文介绍了Base64编码在SQL注入中的应用,如何通过编码绕过GPC拦截,并展示了利用Base64编码进行SQL注入的测试步骤。文中提到的代码示例展示了如何解码Cookie中的数据并将其拼接到SQL查询中,从而可能导致安全漏洞。通过注入测试和利用报错注入,可以探测并获取敏感信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、base64编码注入

base64 一般用于数据编码进行传输,例如邮件,也用于图片加密存储在网页中。数据编码的好处是,防止数据丢失,也有不少网站使用
base64 进行数据传输,如搜索栏 或者 id 接收参数有可能使用 base64 处理传递的参数。在 php 中 base64_encode()函数对字符串
进行 base64 编码也可以进行解码。
编码解码流程:
1 ->base64 编码->MQ==->base64 解密->1
base64 编码注入,可以绕过 gpc 注入拦截,因为编码过后的字符串不存在特殊字符。编码过后的字符串,在程序中重新被解码,再拼接成
SQL 攻击语句,再执行,从而形式 SQL 注入。

二、代码分析

从存在漏洞的代码中,首先判断是否有 POST 的 submit 参数过来,如果有使用$_COOKIE['uname']获取 cookis 传过来的账号,再
拼接到 SQL 带入查询。
这段代码的意思$cookee = base64_decode($cookee);$cookee 传过来的参数进行解码,所以$cookee 传递过来的数据必须先进
行编码,否则解码不了会导致出错。

在这里插入图片描述

三、base64 编码进行注入

1、测试注入点

首先观察网站是否存在 base64 编码的数据,例如传递的id值,搜索模块。
如果存在类似==等,可以用 base64 解码进行测试。
admin'and 1=1-- 编码 YWRtaW4nYW5kIDE9MS0tIA==
admin'and 1=2-- 编码 YWRtaW4nYW5kIDE9Mi0tIA==
本次测试的页面是 cookie ,所以需要 cookie 提交,而且有括号需要闭合。

原字符串                     base64 编码
admin') and 1=1--      YWRtaW4nKSBhbmQgMT0xLS0gIA==
admin') and 1=2--      YWRtaW4nKSBhbmQgMT0yLS0gIA==

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第一次提交页面返回存在 admin,第二次提交没有 admin,两个页面返回的结果不相同,所以存在 SQL 注入。

2、查询敏感信息

本代码存在 mysqli_error 函数,所以可以里利用报错注入再进一步获取敏感信息。
admin') and (updatexml(1,concat(0x7e,(select user()),0x7e),1))-- 
进行 base64 编码
YWRtaW4nKWFuZCAodXBkYXRleG1sKDEsY29uY2F0KDB4N2UsKHNlbGVjdCB1c2VyKCkpLDB4N2UpLDEpKS0tICA=
提交获取敏感信息。

在这里插入图片描述
在这里插入图片描述

### SQL注入漏洞详情分析 SQL注入是一种常见的网络安全威胁,攻击者可以通过未经过滤或验证的用户输入,在应用程序中执行恶意SQL查询。以下是关于SQL注入漏洞的详细分析以及如何编写一份完整的漏洞报告。 #### 一、SQL注入漏洞原理 SQL注入的核心在于攻击者能够通过控制输入变量的方式影响数据库查询逻辑。如果程序直接将未经验证的用户输入嵌入到SQL语句中,则可能导致意外行为的发生[^1]。例如: ```sql SELECT * FROM users WHERE username = '$username' AND password = '$password'; ``` 当`$username`被设置为`admin' --`时,上述查询会被篡改为: ```sql SELECT * FROM users WHERE username = 'admin' -- AND password = ''; ``` 这使得密码条件失效,从而允许非法登录。 --- #### 二、常见SQL注入类型 根据攻击方式的不同,SQL注入可分为以下几种主要类型: 1. **经典型SQL注入** 攻击者通过修改SQL语法结构实现目标功能,比如绕过身份认证或读取敏感数据。 2. **盲注型SQL注入** 当应用返回的结果不显示具体错误信息时,攻击者可通过布尔判断或时间延迟等方式推测数据库内容。 3. **联合查询型SQL注入 (Union-based)** 利用 `UNION SELECT` 将额外的数据附加至原始查询结果集中,用于窃取更多表的信息。 4. **基于带外通道的SQL注入 (Out-of-band OOB)** 如果网络环境支持外部连接,攻击者可能借助DNS请求等形式回传数据给远程服务器。 --- #### 三、SQL注入漏洞的影响范围 成功实施SQL注入可能会带来严重的后果,包括但不限于以下几个方面: - 数据泄露:未经授权访问机密记录; - 数据破坏:删除重要表格或者更改现有条目; - 权限提升:新增管理员账户并完全掌控后台管理系统; - 远程代码执行(RCE): 在少数场景下甚至能触发操作系统层面的操作; --- #### 四、预防措施与最佳实践 为了有效防范此类风险,开发人员应当遵循如下指导方针: 1. 使用参数化查询代替字符串拼接构建动态SQL语句[^2]; 2. 对所有来自客户端的数据进行全面校验, 包括长度限制、字符集约束等; 3. 配置最低限度的安全策略授予DBMS账号所需权限而已; 4. 自定义异常提示消息隐藏内部架构细节以防助纣为虐; --- #### 五、SQL注入漏洞报告模板 撰写一份专业的漏洞报告需包含以下要素: | 字段名 | 描述 | |----------------|----------------------------------------------------------------------| | 漏洞名称 | 明确指出问题所在 | | CVE编号 | 若已公开则填写对应ID | | CVSS评分 | 表达危害程度 | | 影响版本 | 受损软件及其关联组件 | | 复现步骤 | 提供清晰易懂的过程描述 | | 实际效果演示 | 展示实际产生的不良后果 | | 解决方案建议 | 给出可行修补办法 | 示例文档片段如下所示: > ### 脚本文件路径解析缺陷导致目录遍历漏洞(CVE-XXXX-YYYY) > > #### 危险等级: HIGH(高危), CVSS v3 Base Score: X.X/10 > > #### 发生位置: > /api/v1/download.php?file=../../etc/passwd%00.jpg > > #### 测试方法: > 向服务端发送GET请求携带畸形参数即可触发该BUG. > > #### 结果截图: > ![](http://example.com/image.png) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值