Open hitcxy opened 2 years ago
请问0x111111111111110000070f00
中070f前面的内容是什么意思呢
请问
0x111111111111110000070f00
中070f前面的内容是什么意思呢
覆盖数组长度
按照unused (11) | hash (12) | callback (8) | done (1)
的排列,我理解0x111111111111110000070f00
中的111111110000070f
代表的是callback的值。我理解070f是跳转的位置,可是前面的111111110000
是啥意思呢,我这样的理解是对的吗?感谢🙏
按照
unused (11) | hash (12) | callback (8) | done (1)
的排列,我理解0x111111111111110000070f00
中的111111110000070f
代表的是callback的值。我理解070f是跳转的位置,可是前面的111111110000
是啥意思呢,我这样的理解是对的吗?感谢🙏
已做修复,callback是4个字节,你向上追溯看看,相当于修改safeboxes长度
internal function应该是8个字节,根据这里说的。另外origin (20) | triedPass (12)
中的origin应该才是修改safeboxes长度的作用,因为我们已经确保origin<< (12*8)
的值大于idx。主要是我不理解callback的8个字节除了070f这两个字节外,其他六个字节是啥意思
internal function应该是8个字节,根据这里说的。另外
origin (20) | triedPass (12)
中的origin应该才是修改safeboxes长度的作用,因为我们已经确保origin<< (12*8)
的值大于idx。主要是我不理解callback的8个字节除了070f这两个字节外,其他六个字节是啥意思
具体记不清了,但我记得当时我调试的时候,它是4个字节,其他细节也记不太清了2333,师傅要不你调试看看其他几个字节都影响了什么,毕竟只有自己调试的才明白的更彻底
@usherasnick 试了下,不知道为什么现在
JUMPDEST
的编号变成070e
了,所以我是用070e
试的。首先我用0x111111111111110000070e00
去试,是可以成功的;然后我用0x111111000000000000070e00
去试,也是可以成功的。。。。
请问你那有完整的测试代码吗,我这边感觉位置计算不正确,在第二次withdraw时总是失败,调试时再看加载的box.callback是0x000000000000000000,没有有效值,应该是idx计算有误,不知道怎么计算了,这是我idx计算函数: function passArrayIndex() public view returns (uint256) { uint target = uint(keccak256(abi.encodePacked(keccak256(abi.encodePacked(msg.sender, uint256(3)))))) + 2; uint base = uint(keccak256(2)); uint256 idx = (target - base) / 2; if ((target - base) % 2 == 1) { idx += 2; } return idx; }
https://hitcxy.com/2020/balsn2019-bank/
前言 复现 balsn2019 ctf 中的 bank 区块链题目 wtcl ,复现了一个下午 具体分析及官方 WP 如下: https://x9453.github.io/2020/01/16/Balsn-CTF-2019-Bank/ 复现地址为: ropsten@0x85B0446Dc5B5f32cbB674Dc8e49Fc27Ebaff2Ee2 外部账户地址为: 0x785a8D0d84