首页 > 其他分享 >最新Base64注入攻击和代码分析技术

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

时间:2024-03-19 15:35:45浏览次数:24  
标签:编码 代码 Base64 id SQL ID select 注入

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语句中进行查询,将查询结果输出到页面,代码如下: 

<?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语句如下:

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检测。

 

 

 

Ms08067安全实验室专注于网络安全知识的普及和培训,是专业的“图书出版+培训”的网络安全在线教育平台,专注于网络安全领域中高端人才培养。

 

平台已开设Web安全零基础就业,Web高级安全攻防进阶,红队实战攻防特训,Java代码安全审计,恶意代码分析与免杀实战,CTF基础实战特训营,网络安全应急响应,安全工具开发,AI与网络安全等系统培训课程。实验室出版安全图书《Web安全攻防:渗透测试实战指南》、《内网安全攻防:渗透测试实战指南》、《Python安全攻防:渗透测试实战指南》、《Java代码审计:入门篇》等。

 

扫描客服微信 获取更多课件+学习资料

 

 

标签:编码,代码,Base64,id,SQL,ID,select,注入
From: https://www.cnblogs.com/ms08067/p/18083035

相关文章

  • go使用HTTP代理和SOCKS5代理的代码示例
    本文档为获取到代理IP后使用代理的代码样例,供开发者参考。代码样例直接运行无法得到正确的结果,因为代码中的代理地址/端口和应用账号密码等信息都是虚构的,您替换成自己真实的就可以正常运行了。如何获取代理地址/端口和设置代理授权?请参考:接入指南-快速入门使用前提:......
  • 代码随想录算法训练营第五十一天 | 714.买卖股票的最佳时机含手续费,309.最佳买卖股票
     股票总结https://programmercarl.com/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92-%E8%82%A1%E7%A5%A8%E9%97%AE%E9%A2%98%E6%80%BB%E7%BB%93%E7%AF%87.html 714.买卖股票的最佳时机含手续费 已解答中等 相关标签相关企业 提示 给定一个......
  • 身份证文字识别ocr免费-身份证实名认证接口-护照识别-Java调用代码
    文字识别技术是针对图片上的文字进行提取,免去人们手动输入的繁琐。针对证件,翔云提供了身份证识别接口、身份证实名认证接口、护照识别接口,身份证识别接口自动提取身份证信息、身份证实名认证接口实时联网查验身份证的真伪。以身份证识别接口Java语言代码为例,欢迎免费体验:pac......
  • JAVA接口代码-从技术到创新、发票ocr、发票查验接口、发票识别
    财政类票据ocr、增值税发票识别、全电票ocr接口是一项重要的技术创新,在数字化、信息化高速发展的商业环境中发挥着至关重要的作用。通过集成翔云API,可快速实现发票信息的自动化识别提取与真伪查验,提升了财务管理效率。就发票识别接口,提供Java语言代码,有需要的人员可在线......
  • pipeline拉取代码构建上传制品
    pipeline{agent{label'ubuntu'}stages{stage('拉取代码'){steps{checkoutscmGit(branches:[[name:'main']],extensions:[submodule(depth:1,parentCredentials:true,recursiveSub......
  • PVS‑Studio 7.29 for macOS, Linux & Windows - 代码质量安全静态分析
    PVS‑Studio7.29formacOS,Linux&Windows-代码质量安全静态分析PVS‑Studio-代码漏洞扫描工具|静态代码测试|代码安全分析请访问原文链接:https://sysin.org/blog/pvs-studio/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgC、C++、C#和Java代码静......
  • 代码精简的治理方案和工具
    一、前言在大型软件系统中,随着业务的发展和变迁,部分代码线上已经废弃或者出现冗余,由于种种原因没有被及时删除和治理,随之而来的是代码维护成本提升。  代码精简的价值如上图所示,并由此成为服务治理的一个重要方向,在业界头部企业也有对应的治理项目谷歌【死神】项目,用机器......
  • node 从图片的url获取base64
     在Node.js中,你可以使用HTTP模块来从URL读取图片,并将其转换为base64编码。下面是一个示例代码:1consthttp=require('http');2constfs=require('fs');34constimageUrl='http://example.com/image.jpg';5this.getImgBase64(imag......
  • vite给HTML注入变量
    安装插件:vite-plugin-html npminstallvite-plugin-html-D在vite.config.js中配置 #vite.config.js***import{defineConfig,loadEnv}from"vite";import{createHtmlPlugin}from"vite-plugin-html";constgetVite......
  • python自动化——自动化框架常用封装代码复习
    日志模块:importloggingimportosdefcreat_log(name="mylog",level="DEBUG",filename="log.log",sh_level="DEBUG",fh_level="DEBUG"):log=logging.getLogger(name)log.setLevel(level)fh=lo......