前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >base64的天坑

base64的天坑

作者头像
血狼debugeeker
发布2021-09-10 10:44:21
4630
发布2021-09-10 10:44:21
举报
文章被收录于专栏:debugeeker的专栏

base64编码补位的坑,导致数据验证被绕过,也绕过了系统黑名单的检测。

背景


突然,测试人员找上我,说篡改某对象ID的值会绕过系统的黑名单检测!

我非常不相信,因为该对象ID生成有随机因素,而且它的校验也有hash判断,只要校验不通过,立马会拒绝。

他把那个对象ID发给我,是这样的

NWE3MGQzMTBhYWYyODUxZTFlN2QwOWY2OWFmOGE5ZjMtMmUzOGIxZWNlZTVkNDUzNjkyYTg2NDAxYTVhZjk0MzUwMDAyLUx3QTF1OGpXWC8zelM2TUt0NG9pbW1qZzVEOD1=

是基于下面这个值改的。

NWE3MGQzMTBhYWYyODUxZTFlN2QwOWY2OWFmOGE5ZjMtMmUzOGIxZWNlZTVkNDUzNjkyYTg2NDAxYTVhZjk0MzUwMDAyLUx3QTF1OGpXWC8zelM2TUt0NG9pbW1qZzVEOD0=

第一个是篡改后的,第二个是原始生成的。第一个和第二个的差别是倒数第二个字符由0改为1

定位过程


原始的字符串是经过base64编码生成。用于base64解码一下

代码语言:javascript
复制
>>> origin = "NWE3MGQzMTBhYWYyODUxZTFlN2QwOWY2OWFmOGE5ZjMtMmUzOGIxZWNlZTVkNDUzNjkyYTg2NDAxYTVhZjk0MzUwMDAyLUx3QTF1OGpXWC8zelM2TUt0NG9pbW1qZzVEOD0="
>>> modified = "NWE3MGQzMTBhYWYyODUxZTFlN2QwOWY2OWFmOGE5ZjMtMmUzOGIxZWNlZTVkNDUzNjkyYTg2NDAxYTVhZjk0MzUwMDAyLUx3QTF1OGpXWC8zelM2TUt0NG9pbW1qZzVEOD1="
>>> origin == modified
False
>>> origin_decode = base64.b64decode( origin )
>>> modified_decode = base64.b64decode( modified )
>>> origin_decode == modified_decode
True
>>> origin_decode
b'5a70d310aaf2851e1e7d09f69af8a9f3-2e38b1ecee5d453692a86401a5af94350002-LwA1u8jWX/3zS6MKt4oimmjg5D8='
>>> modified_decode
b'5a70d310aaf2851e1e7d09f69af8a9f3-2e38b1ecee5d453692a86401a5af94350002-LwA1u8jWX/3zS6MKt4oimmjg5D8='

WTF, 这是怎么回事,为什么两个解码的结果是一样的?再继续修改看看是怎么回事?

剩余内容请关注本人公众号debugeeker, 链接为base64的天坑

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/03/30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 定位过程
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档