宇宙链 宇宙链
Ctrl+D收藏宇宙链

遗忘的亚特兰蒂斯:以太坊短地址攻击详解

作者:

时间:1900/1/1 0:00:00

作者:慢雾安全团队文章来源:慢雾科技

0概述

说到智能合约漏洞,第一时间映入脑海的可能都是算法溢出,call()函数滥用,假充值等漏洞,毕竟这是在很多智能合约上都有实例,并且危害等级也是比较高的,但是有一个漏洞也许很多人都见过、听过却不是很多人都关心的漏洞,它就像是人类世界的亚特兰蒂斯,很多人知道,却很少有研究报告,Google上能找到的,也不过只是说原理而没有复现实战,有点纸上谈兵的感觉。大家都知道的是这是EVM层面的缺陷,而不是智能合约层面的问题,并且在我们默认的思维里面,这是一个已经被修复的漏洞。前段时间尝试翻查短地址攻击的官方修复方案,但是经过我的搜索,并没有找到相关的修复方案,Github上也扒了一遍,也看不到历史release有相关的修复,于是,我猜,真的是我猜,EVM层面可能并没有修复。

1短地址攻击基础知识

短地址攻击其实就是每个ERC20的合约里面都有一个以下的函数

Web3 App开发平台Sort宣布完成350万美元种子轮融资:5月22日消息,Web3 App 开发平台 Sort 宣布完成 350 万美元种子轮融资,Lemniscap 和 The General Partnership 共同领投。Sort 允许开发人员将智能合约整合到应用程序中,本轮资金将用于扩大 Sort 团队,推进平台的产品套件。[2023/5/23 15:19:41]

当对合约的这个函数进行调用的时候,其实在EVM层面来说是传入一串字节码,就像下图这样,可以在Etherscan里面查看每笔交易的inputdata里面的整个函数的调用数据

传入的字节码一共有136字节(正常来说),里面包含方法的签名(前4字节),和传入的参数值。上面这个图是不正常的,只有134字节,这是我经过特殊处理过的,下面我会详细说

从上面的信息我们可以知道,EVM是根据字节码识别传入的参数的,字节码是多少就是多少,也不会去验证。巧了,就是这样,漏洞就产生了,有人就想用不合法的地址,比如地址故意写少后几位,看看EVM会怎么处理,但是又巧了,EVM不仅不会报错,还会「贴心」的帮你对地址进行补全操作,怎么补全的呢?就是将地址后面不足的部分,用金额数据部分的位数来补全,比方说你的地址本来是

FTX一季度将向其律师和咨询公司支付总计1.03亿美元:金色财经报道,据已破产的加密交易平台 FTX 在法庭上提交的文件显示,3 月份有五家法律及顾问相关公司 Sullivan & Cromwell、Alvarez & Marshal、AlixPartners、Quinn Emmanuel Urquhart & Sullivan 和 Landis Rath & Cobb 向 FTX 开出合计 3640 万美元的账单。而一月份、二月份的相关账单金额分别为 3420 万美元和 3250 万美元,FTX 一季度共计将为此支付 1.03 亿美元。[2023/5/3 14:40:17]

结果由于你心机叵测,故意写少两个0,变成下面这样

那么「贴心」的EVM就会从字节码中的金额数据部分取两位对地址进行补全,而金额数据部分的前两位又恰好是0,那么就是说你的地址还是原来的地址,但是数据部分就少2位了,怎么办呢?这就不符合ABI的字节数啦,没关系,「贴心」的EVM会将你的金额数据部分从末位开始补0,补到为正常的136字节为止,那么有同学就要问了,如果我的地址有6个0,那么我地址故意写少6个0,是不是数据部分就多了6个0?那不是发财了?

Manta联合创始人:Tornado Cash禁令可能会给其他隐私协议带来灾难:8月17日消息,近日,隐私保护协议Manta Network的联合创始人Shumo Chu在接受采访时表示,美国政府对Tornado Cash的严格制裁可能会对每个Web3协议(包括隐私保护协议)产生连锁反应。Tornado Cash(TORN)是一种匿名化硬币交易的以太坊(ETH)隐私协议。这些协议类似于Monero(XMR)和Zcash(ZEC),它们屏蔽了加密交易的发送者和接收者数据。

本月早些时候,美国财政部禁止美国居民使用该协议,并于8月5日将与其相关的44个ETH和USDC地址列入特别指定国民名单。(Cointelegraph)[2022/8/17 12:30:37]

答案就是:你是对的

也就是说,本来填的数据是1,变成字节码后是0x1,如果地址少了6个字节,那么你的data就自动变成0x1000000啦!惊不惊喜,意不意外!

Otherdeed市值突破10亿美元:5月23日消息,据NFTGo.io最新数据显示,YugaLabs元宇宙项目Otherside虚拟地块Otherdeed NFT市值已突破10亿美元,截止目前为11.2亿美元,交易额达到9.4499亿美元。不过,Otherdeed NFT的地板价并没有出现较大幅度增长,当前为3.24ETH,24小时涨幅2.54%。[2022/5/23 3:35:10]

2第一次出师

第一次我尝试使用remix进行复现,但结果是能预料到失败的,如下图,为什么呢?因为这是一个在2017年就被爆出的漏洞,修复方案满天飞,怎么可能那么简单的就让你成功了呢,所以前端肯定会对你的输入的地址进行过滤和检查,想成功,是naive的。

但是作为一个搞事情的人,怎么可以轻言放弃,既然没有找到官方修复方案,底层肯定就还有问题的,于是乎,我只能从最底层开始进行操作,我想到了使用web3进行漏洞复现

3环境准备

首家BAYC主题餐厅Bored & Hungry已开业,接受APE和ETH支付:4月25日消息,首家Bored Ape Yacht Club(BAYC)NFT主题餐厅Bored & Hungry已经于当地时间4月9日在美国加州长滩正式开业。据悉,Bored & Hungry餐厅将以快闪店的形式开放90天。该餐厅接受ApeCoin(APE)、ETH以及借记卡/信用卡支付方式。这家餐厅由食品企业家Andy Nguyen构思。为了推出该餐厅,早在3月Nguyen花费267000美元购买Bored Ape #6184,此外还购买多个MAYC。通过二维码,餐厅可以扫描顾客的MetaMask钱包,查看其APE、BAYC、MAYC或BAKC NFT。拥有加密货币或相关NFT的顾客可以享受餐厅提供的特殊福利,比如免费套餐组合等。[2022/4/25 14:46:29]

操作系统:macOSnode:v8.11.0web3:1.0.0-beta.36rpc:infura测试合约的abi示例合约:

使用remix在测试网部署示例合约,获取合约的地址,下面会用到获取abi的方法:

4第二次出师

注:(??本次所有操作均在命令行中执行)

键入node进入命令行提示符在项目中引入web3并设置provider

创建合约实例:

构造方法abi,也就是构造我们上面说的交易里面的inputdata,由于我们是要构造短地址攻击,所以我们的地址是要比正常的地址的位数要少的,为的就是要让EVM用零自动补全缺失的地址,但是正常的构造是会失败的,例如下图这样

但是,再次声明一下,作为一个搞事情的人,不能轻言放弃!于是我们需要一点特别的方法,一开始的时候我到了这里就以为会有检测就不行了,太天真,其实是web3的检测,我们需要一点特别的方法。这个方法分为两步

第一步,先构造正常的abi,这次使用的地址是'0xdfca6234eb09125632f8f3c71bf8733073b7cd00'

如图,现在的abi,也就是inputdata,是136字节的。

第二步:使用一个小技巧,将abi里面地址后面的两个零偷偷抹掉,本来是136字节的,现在只有134字节了,也就是我上面说到的不正常的inputdata,就是在这个时候构造出来的

以上就是把零抹掉之后的abi

ok,一切都准备好之后就可以到最激动人心的时刻了

在项目中引入ethereumjs-tx

导入你的私钥并做一些处理:

构造原始交易数据,这是一笔十分原生的以太坊交易数据,每一次的合约调用,其实都会构造下面这一个数据。有关这方面的知识也不详细展开,但是,除了nonce我们是不怎么了解之外,其他都是我们在remix上调用合约的时候会接触到的,有关于nonce的说明,其实就是帐号所发送的交易数量,比方说你的帐号曾经处理过5笔交易,那么nonce就等于4,可以在ehterscan上查看到你的帐号的最后一笔交易的nonce,以下是具体的交易数据:

对交易进行签名和对交易做一点处理

发送交易

5奇迹再现

通过预先设置的event事件我们可以看到,EVM成功补零,输入本来是123,但是EVM提取的结果却是31488,本来的16进制123是0x7b,现在是0x7b00!刺激!

6后记

「贴心」的我在测试网上也布了合约,而且我还验证了,可以在链上查询记录,眼见为实。https://kovan.etherscan.io/address/0x6e2f32497a7da13907831544093d3aa335ecbf33#code

这次的操作,不禁使我想起了飞跃疯人院里面的那句话--ButItried,didn'tI?Goddamnit,atleastIdidthat.

7参考资料

web3js1.0接口方法(中文手册)http://cw.hubwiz.com/card/c/web3.js-1.0/1/2/21/

短地址攻击详解https://zhuanlan.zhihu.com/p/34470071

有关ABI的详细信息在这里https://solidity-cn.readthedocs.io/zh/develop/abi-spec.html

来源链接:mp.weixin.qq.com

本文来源于非小号媒体平台:

慢雾科技

现已在非小号资讯平台发布1篇作品,

非小号开放平台欢迎币圈作者入驻

入驻指南:

/apply_guide/

本文网址:

/news/3627019.html

以太坊ETH

免责声明:

1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险

2.本文版权归属原作所有,仅代表作者本人观点,不代表非小号的观点或立场

上一篇:

阿联酋证券监管机构批准了规范ICO的计划

下一篇:

澳大利亚新南威尔士州将数字驾驶执照上链

标签:ETHWEBWEB3THEtogetherbnb手游下载安卓web3.0币种在中国合法吗web3币圈ethereum

以太坊交易所热门资讯
新加坡央行行长:我们见过的任何 token 都不是证券,无需进行监管

据Coindesk9月19日报道,新加坡中央银行新加坡金融管理局(MAS)表示,根据该国的证券法,任何加密代币都无需进行监管.

1900/1/1 0:00:00
新京报:比特币场外交易乱象——客掀非吸漩涡,玩家被圈近3亿

“我从2017年开始接触比特币场外交易,却在今年相继被200多万。”王哲是一位资深比特币“搬砖工”,即低买高卖的比特币场外交易员.

1900/1/1 0:00:00
盘点:黑客今年卷走币圈 10 亿美金,交易所、DApp、钱包无一幸免

2018年,加密货币领域发生了大量黑客攻击事件。据统计,这一年黑客卷走超过10亿美金,交易所是重灾区,DApp、个人钱包、公司服务器无一幸免,纷纷沦为黑客的「提款机」.

1900/1/1 0:00:00
Bitcoin ABC 开发者修复 Bitcoin ABC 0.17.0 版本的一个漏洞

2018年4月26日,BitcoinABC开发团队得到通知比特现金矿工使用的Bitcoin-ABC0.17.0版本客户端存在一个严重漏洞。对漏洞进行分析后,ABC开发者打了补丁,更新客户端版本0.17.1并把软件发给了BCH矿池.

1900/1/1 0:00:00
日本通证监管探索之路,案件推动,多措并举

2018年1月,日本发生了震惊行业的「CoinCheckNEM流出事件」,引发日本新一轮通证监管变革。本文将就以下方面对日本监管演变进行详细分析:门头沟事件:日本开始通证监管的导火索.

1900/1/1 0:00:00
区块链世界先锋军——MBAex交易所

各行各业在开创的初期总会呈现出群雄争霸,百家争鸣的状态。在区块链这个新兴技术行业自然也不例外,各大公链使出浑身解数谋求让市场人得到共识;各大项目不甘示弱试图快速推进区块链项目模型却忽略落地性;而作为区块链里最大的流量口交易所,也都丰富.

1900/1/1 0:00:00