前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >最新Base64注入攻击和代码分析技术

最新Base64注入攻击和代码分析技术

作者头像
Ms08067安全实验室
发布2023-10-25 10:30:43
4400
发布2023-10-25 10:30:43
举报
文章被收录于专栏:Ms08067安全实验室

Base64注入攻击

Base64注入攻击的测试地址在本书第2章。

从URL中可以看出,参数ID经过Base64编码(“%3d”是“=”的URL编码格式),解码后发现ID为1,尝试加上一个单引号并一起转成Base64编码,如图4-64所示。

图4-64

当访问id=1'编码后的网址时(/4.3/base64.php?id=MSc%3d),页面返回错误。1 and 1=1和1 and 1=2的Base64编码分别为MSBhbmQgMT0x和MSBhbmQgMT0y,再次访问id=MSBhbmQgMT0x和id=MSBhbmQgMT0y,返回结果分别如图4-65和图4-66所示。

图4-65

图4-66

从返回结果可以看到,访问id=1 and 1=1时,页面返回与id=1相同的结果;而访问id=1 and 1=2时,页面返回与id=1不同的结果,所以该网页存在SQL注入漏洞。

接着,使用order by查询字段,使用Union方法完成此次注入。

Base64注入代码分析

在Base64注入页面中,程序获取GET参数ID,利用base64_decode()对参数ID进行Base64解码,然后直接将解码后的$id拼接到select语句中进行查询,将查询结果输出到页面,代码如下:

代码语言:javascript
复制
<?php
    $id = base64_decode($_GET['id']);
    $con=mysqli_connect("localhost","root","123456","test");
    if (mysqli_connect_errno()){
       echo "连接失败: " . mysqli_connect_error();
    }
    $result = mysqli_query($con,"select * from users where `id`=".$id);
    if (!$result) {
        printf("Error: %s\n", mysqli_error($con));
        exit();
    }
    $row = mysqli_fetch_array($result);
    echo $row['username'] . " : " . $row['address'];
    echo "<br>";
?>

由于代码没有过滤解码后的id,且将id直接拼接到SQL语句中,所以存在SQL注入漏洞。当访问id=1 union select 1,2,3,4,5#(访问时,先进行Base64编码)时,执行的SQL语句如下:

代码语言:javascript
复制
select * from users where `id`=1 union select 1,2,3,4,5#

此时,SQL语句可以分为select * from users where `id`=1和union select 1,2,3,4,5这两条,利用第二条语句(Union查询)就可以获取数据库中的数据。

这种攻击方式还有其他利用场景,例如,如果有WAF,则WAF会对传输中的参数ID进行检测。由于传输中的ID经过Base64编码,所以此时WAF很有可能检测不到危险代码,进而绕过了WAF检测。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-10-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Ms08067安全实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云代码分析
腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档