Lab: Authentication bypass via encryption oracle 漏洞平台

https://portswigger.net/业务web-security/logic-flaws 学习地址

在线计算字符串长度-开发者工具网 线上字符串长度计算;

在线时间戳转换工具 时间戳在线换算

Base64笔记 - 阮一峰的网络日志 base64讲解

先说问题:

1、希望懂加密算法的朋友,帮忙留言,文章中的问题;base64 解码后,hex 处理,留下的字符数应该是一样的,为什么长度却不一样??

本题难点是对加密原理的理解,和对base64 解码内容修改;

 

解题思路:

1、登录用户时,使用题解给的账号密码登录,且勾选保持登录;

2、在保持登录的情况下,对文章进行评价;在提交的时候,如果邮件的格式不对,会产生 /post?postId=1 响应,其中

提示信息,显示如下:可见 显示内容是: Invalid email address: 邮件提交内容; 通过观察知道 stay-logged-in 和 notification 加密方式一致;

3、通过 使用 burp 中继功能 ,将 stay-logged-in 的内容,替换到notification ,得到解析内容:

wiener:1598530205184 这样一个内容; 1598530205184 这个是时间戳(时间戳生成在线工具链接在上面)

4、现在构建管理员的 stay-logged-in :administrator:时间戳 ; 利用邮件报错 对构建内容生成秘钥字符串;

Invalid email address: administrator:时间戳 ---解析后是这个内容;

5、对生成的秘钥字符串,修改去掉“Invalid email address: ” 这个内容----注意冒号后有空格;字符长度为23

对生成的秘钥字符串 url和base64解码---删除32个字节,重新编码提交

注:下面仅是例子,是成功得到的例子:administrator:1656740167

共24个字符

6、提交后报如下错误:要求base64 编码内容长度必须是16 的倍数!----即上图第3行内容,是16倍数;

7、构造如下字符串: xxxxxxxxxadministrator:your-timestamp,开头加了9个字符;

注:我也不知道为啥加的是9个,需要对加密原理了解;

使用该字符串,通过邮件错误,获取到加密字符串;

8、url和base64 解密 新获取到的加密字符串----删除 开头32 (23+9=32)个字符,正好如上图的成功图--是16的倍数;

然后 base64 和url 加密,测试一下是否是想要的格式: administrator:时间戳

9、获取到符合格式的加密字符后,从历史记录中 发送 get / 请求到中继器(repeater)里, 删除

session cookie 完全,并替换 stay-logged-in cookie 与您自制的 cookie 的密文。 发送请求。 观察您现在以管理员身份登录并可以访问管理面板。

10、 得到管理员界面,删除指定用户,完成实验!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值