ISCC ISCC客服一号冲冲冲(二)

2 篇文章 0 订阅

这个题其实是转自Bugku的Login4 (CBC字节翻转攻击)

题目有提示密码就是web1 的flag
然后登入
在这里插入图片描述
这里有回显,然后我们换一下
在这里插入图片描述

在这里插入图片描述
下面cookie里的iv和cipher看着就像CBC加密的方式

利用的就是CBC解密的特点:前16个密文字符用来解密接下来的一组16个密文,就是说通过改变前16个密文就可以改变下面16个密文解密的结果,这就是字符翻转攻击。具体原理看链接,解释的挺详细。

重点来说CBC的加密方式吧,我理解的就是16个一组,然后密文第一组会和初始化向量(就是iv)进行异或运算得到明文第一组,然后密文第二组再和密文第一组进行异或运算得到明文第二组,以此类推
在这里插入图片描述

然后就阔以通过改前面的密文,影响后面组的明文内容,从而让username改为admin

下一步将我们的序列化内容分组,16个一组:

s:2:{s:8:”userna

me”;s:5:”admil”;

s:8:”password”;s

:3:”123″;}

我们想要改的l在第二组的13位(从0开始),那我们要改第一组的第13位。

抄的大佬思路

假设:A ^ B = C,则可得
B = A ^ C
当人为修改A=A ^ C时,
A ^ B = A ^ C ^ B = B ^ B = 0
当人为修改A=A ^ C ^ x (x为任意数值)时,
A ^ B = A ^ C ^ x ^ B = B ^ B ^ x = x

举例:
密文1[4]的意思是密文1字符串第4个字节,相当于数组下标。
设:密文1[4] = A,解密(密文2)[4] = B,明文2[4] = C
因为A ^ B = C,根据结论有B = A ^ C
当人为修改A=A ^ C时,那么A ^ B = A ^ C ^ B = B ^ B = 0,这样明文2[4]的结果就为0了
当人为修改A=A ^ C ^ x (x为任意数值)时,那么
A ^ B = A ^ C ^ x ^ B = B ^ B ^ x = x,这是明文2[4] = x,这样就达到了控制明文某个字节的目的了。

修改脚本:


<?php
$enc=base64_decode(urldecode("bp1MKh8f9RLRRqO3uSSykYRYV0kfOqQTx1qUxKpekZt6AutPfxSbJXM0qc2ppFCTIW9NYIZZbLfEhbCvSUCoqfxDWiAR5a7xWxVJHDCOG1k%3D"));
$enc[13] = chr(ord($enc[13]) ^ ord("l") ^ ord ("n"));
echo base64_encode($enc);
?>

在这里插入图片描述
在这里插入图片描述
报错显示无法序列化,这是因为我们修改了第一组密文,那第一组密文解密后也是错的,不能正确序列化。通过CBC解密的原理我们知道,第一组密文解密时,用的是iv的值,那么我们构建一个新的iv,使这个iv解密第一组后,得到s:2:{s:8:”userna即可

<?php
$enc=base64_decode("YixidufNP1ip8AV9exttKG1lIjtzOjU6ImFkbWluIjtzOjg6InBhc3N3b3JkIjtzOjE1OiIxU0NDXzJvMmxfS2VGdXUiO30=");
$iv=base64_decode(urldecode("CoXsrNvawesqx1ACRM76Xw%3D%3D"));
$cleartext = 'a:2:{s:8:"userna';
$newiv = '';
for ($i=0;$i<16;$i++){
    $newiv=$newiv.chr(ord($iv[$i]) ^ ord($enc[$i]) ^ ord ($cleartext[$i]));
}
echo base64_encode($newiv);
?>

在这里插入图片描述

再放两个连接吧,写的还不错
https://blog.csdn.net/u013577244/article/details/86310881

https://blog.csdn.net/zpy1998zpy/article/details/80684485

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值