前提提要
这篇文章会介绍一种熊市的技术思路,如何让黑客给我们打工。白嫖黑客的劳动成功。技术的细节暂时不会放出。感兴趣的小伙伴可以在文末加入我们的频道。
什么是16进制
需要先为你讲清楚什么是十六进制数据。
你与任何一个合约交互都会为其输入一定的数据,合约接收到这部分数据进行处理,这个数据定义了你要和合约的哪个接口函数交互,要给这个接口函数传入什么参数等等,这些数据都会以16进制的形式进行压缩。
你打开etherscan,随意找到你曾经的一个交易记录点击进入详情,然后一直下拉,你会在最下面看到 input data,右边有一长串字符,这就是你当时与这个合约的函数交互时输入的数据转成16进制后的样子。
![[Pasted image 20220704110226.png]]
16进制交易复制之前案例
这的问题主要是两个情况导致的:
1.用户绕开官网,直接通过matemask用别人已经产生的16进制Input Data与合约直接交互。
2.合约对于mint的白名单校验存在漏洞。
这次NBA的漏洞也不要求你读懂16进制就可以直接用,NBA项目漏洞在于他不校验msg.sender的地址。所以我完全可以先找到张三的交易记录,然后把他的16进制复制粘贴到钱包里执行交易,这时候在校验白名单时用的是张三的地址,所以会校验通过,但是mint时用的是我的地址,因为是我正在和合约进行交互。
要想这样操作,需要使用 Metamask 调用智能合约,首先在 Metamask 的高级设置中打开 Advanced gas controls(用于手动设置 gas limit)和 Show Hex Data(用于输入 input data),收款人选择智能合约地址(参照其他同类型交易提取对应地址) ,在 Hex Data 中输入 input data,并记得在最前面加上"0x",点 Confirm按钮
发送这个交易之后,虽然我们不是白名单,但是还是可以白嫖一个NFT。
实在没看懂的话参考下面链接:
https://twitter.com/gm365/status/1519897349598093312
https://mp.weixin.qq.com/s/WTmegfvWEs5ws9FuEbls8Q
白嫖黑客的羊毛
有了上面的前置知识,我们知道了如果能看懂input里面的数据,并且在里面做手脚。我们可以复制任意的交易数据。
本着利用最大化的目的。我们想想,区块链里面谁是空手套白狼的高手? 当然是黑客了!
在过去的上个月,区块链前十的黑客攻击。就造成下面的损失。
想想看,如果我们可以跟着黑客吃肉,在他发起攻击的后面马上复制他的交易。岂不是也可以在熊市赚钱。相当于黑客辛辛苦苦挖漏洞,我们白嫖他们的劳动成功。毕竟区块链的交易都是公开透明的。就看谁最先发现,谁最先下手。这样看的话。相当于黑客在为我们打工了。
粗略的介绍下交易复制流程:
1.检测到黑客攻击
2.解析input data
3.将黑客地址换成自己地址
4.检测能够套利的利润
4.fork 区块进行套利模拟
1.检测到黑客攻击
区块链大部分的攻击都是使用flashloan作为启动资金,正经人谁用flashloan啊?所以我们的思路就是监控所有的flashloan事件。这里牵涉的技术细节就不展开说了。大致就是监听区块链上所有的事件。筛选出flashloan。技术栈需要EVM。实现效果如下:
2.解析input data
这里的技术栈还是EVM这些,这里提供几个导图,其他内容就不公开了
3.将黑客地址换成自己地址
经过上面的操作,可以大致了解黑客做了些什么操作,我们要的事情就是将黑客的钱包地址修改成我们的地址。下面就是将input解密之后里面的数据内容。
4.检测能够套利的利润
这里还有个细节要考虑,就是当黑客进行攻击之后。池子里面的资金已经没有初始前那么多资金量了。所有我们也需要修改我们可以套利的资金。这里需要结合不同的情况进行分析。获取到池子当前的reserve
.
5.fork 区块进行套利模拟
等上面这些攻击细节都明确之后,我们就要看看效果了。但是不能直接上链,毕竟还不是很成熟。所以我们需要fork主链,对套利进行模拟测试。如果攻击之后确实有利润。那我们就可以真正的上链。
最终效果如下:
这个是仿照fswap漏洞进行套利。漏洞的细节这里就不说了,可以在这里了解
https://www.defidaonews.com/media/6758710
我们仿照黑客的记录,套利了3100U。还是不错的。文章来源:https://uudwc.com/A/qBxEw
讨论频道:
https://t.me/+I5Jo_3_FKhpmZWQx文章来源地址https://uudwc.com/A/qBxEw