base64的天坑

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

背景


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

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

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

NWE3MGQzMTBhYWYyODUxZTFlN2QwOWY2OWFmOGE5ZjMtMmUzOGIxZWNlZTVkNDUzNjkyYTg2NDAxYTVhZjk0MzUwMDAyLUx3QTF1OGpXWC8zelM2TUt0NG9pbW1qZzVEOD1=

是基于下面这个值改的。

NWE3MGQzMTBhYWYyODUxZTFlN2QwOWY2OWFmOGE5ZjMtMmUzOGIxZWNlZTVkNDUzNjkyYTg2NDAxYTVhZjk0MzUwMDAyLUx3QTF1OGpXWC8zelM2TUt0NG9pbW1qZzVEOD0=

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

 

定位过程


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

>>> 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的天坑

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值