【SQL注入-11】base64注入案例—以Sqli-labs-less22为例(借助BurpSuite工具)

本文详细介绍了Base64注入的概念,包括Base64编码的基础、URL编码的区别以及在URL中的应用。通过一个具体的实验案例,展示了如何在PHP环境中利用BurpSuite工具进行Base64注入的步骤,包括判断注入点、注入类型、回显列数和位置,以及如何获取数据库信息。实验表明,即使数据经过Base64编码,仍可能存在SQL注入风险,需要对编码参数进行安全性检查。

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

1 base64注入概述

1.1 base64编码基础

定义:Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。

Base64编码是从二进制字符的过程,可用于在HTTP环境下传递较长的标识信息。Base64编码具有不可读性,需要解码后才能阅读。

Base64要求把每三个8bit的字节转换为四个6bit的字节(3 * 8 = 4*6 = 24),然后把6bit再添两位高位0,组成四个8bit的字节。也就是将3字节转成4字节,不足4字节补’=’,最多补两个’=’。这也就是为什么Base64出来的结果在结尾处经常有’=‘或者’=='的原因。

转换后,再用一个码表来得到我们想要的字符串(也就是最终的Base64编码),这个表是这样的:
在这里插入图片描述
例子

转换前 10101101 10111010 01110110

转换后 00101011 00011011 00101001 00110110

即为十进制 43 27 41 54

对应码表中的值 r b p 2

所以上面的24位编码,编码后的Base64值为 rbp2

解码同理,把 rbq2 的二进制位连接上再重组得到三个8位值,得出原码。

1.2 base64编码与URL编码

存在问题:标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。

解决问题:可采用一种用于URL的改进Base64编码,它在末尾填充’='号,并将标准Base64中的“+”和“/”分别改成了“-”和“_”,这样就免去了在URL编解码和数据库存储时所要作的转换,避免了编码信息长度在此过程中的增加,并统一了数据库、表单等处对象标识符的格式。

1.3 base64注入

定义:base64注入是针对传递的参数被base64编码后的注入点进行注入。
特点:除了数据被编码以外,其中注入方式与常规注入一般无二。

2 base64注入案例

2.1 实验平台

(1)靶机:——虚拟机(IP为172.16.1.1):本节实验靶场是在win2008系统上基于phpstudy搭建的一个sqli-labs漏洞靶场,win2008及phpstudy的安装过程可以参考《【语言环境】WAMP环境部署及优化—以win2008R2SP1为操作系统》,sqli-labs漏洞靶场的搭建可以参考《

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值