区块链
文章平均质量分 88
luc1fer丶
成都信息工程大学在校生
展开
-
2022中国可信链大赛初赛赛题全解
所有的题目我都放在了,由于太长就不放入wp了,感兴趣的可自行移步。原创 2022-11-28 19:26:52 · 1824 阅读 · 0 评论 -
capture the ether靶场题解(Miscellaneous)
分析一下思路,如果我们编写一个满足ITokenReceiver接口的攻击合约,并把它的地址作为玩家地址,那么我们通过合约调用bank中的取钱函数,取走五十万后,在我们的tokenFallback函数中再调用一次withdraw函数,就会再向我们转五十万,即可完成。bank合约创建之初,就获得了一百万的token,创建者拥有五十万的使用权,玩家拥有五十万的使用权,如果我们通过token往bank里面进行转账,就会调用bank的tokenFallback函数,给我们增加bank中的余额。原创 2022-11-26 11:08:56 · 348 阅读 · 0 评论 -
capture the ether靶场题解(Account)
思路很简单,使用creat2,我们知道creat2可以根据用户输入salt的不同,部署可控地址的合约,我们只需要将攻击合约的字节码放入deploy函数,再根据脚本算出生成对应地址需要的salt。将部署合约的地址放入s1,攻击合约字节码哈希后放入s3,经过一段时间即可生成出salt,将salt放入deploy函数,即成功部署attack合约,调用攻击函数即可。同样能够在区块链浏览器上查到交易,且我们能够发现,本来r应该唯一的交易,确存在两笔交易拥有相同的r,我们可以根据这个计算出对应账户的私钥。原创 2022-11-25 22:02:13 · 2000 阅读 · 0 评论 -
capture the ether靶场题解(Math)
if代码块本身的逻辑是没有问题的,并不会出现变量覆盖的情况,但else就不一样了,由于没有进if,相当于直接创建了一个结构体变量,这势必会造成变量覆盖,而能够覆盖的就是数组的长度以及head。由于数组的长度取决于我们传入的wei数,而在push中会对数组的length++,length又跟amount公用一个slot,所以我们传入1wei则长度和amount都2,我们两次都传入1wei,则第一次push的结构体会被第二次push的结构体覆盖,具体原因我就不一一阐释了。原创 2022-11-21 22:36:48 · 1903 阅读 · 0 评论 -
Damn Vulnerable DeFi靶场实战(11-13)
题目要求:大意是有一个Gnosis Safe的钱包注册表,有人部署或者注册钱包时,会获得十个DVT代币,目前有四个人注册了,注册表中有四十个DVT代币,我们需要获取这四十个代币。WalletRegistry.sol合约:题目只给了这一个合约,合约中前两个函数分别是给address增加权限和删除权限,第三个函数就是我们要达到的目标,其中的限制条件非常多,我们来仔细分析一下这个函数。首先,确保合约拥有足够的token。第二,,调用者必须要是代理工厂合约。第三,,限制了传入的singleton必须是Gn原创 2022-11-14 17:33:03 · 606 阅读 · 0 评论 -
Damn Vulnerable DeFi靶场实战(6-10)
damndefi靶场原创 2022-11-08 10:19:16 · 2143 阅读 · 0 评论 -
Damn Vulnerable DeFi靶场实战(1-5)
知道这一点后我们可以看看用户合约。题目只给了这个合约,这个合约包含三个函数,存,取和借,flashloan函数中限制了借的钱以及是否归还,并且调用者必须满足IFlashLoanEtherReceiver接口,因此调用者必须是一个合约,且满足此接口,那么execute函数则是我们可以自己定义的。经过上面的分析,我们的思路已经很明确了,就是在闪电贷合约中借钱,然后存入矿池中,继而得到奖励代币,再将奖励代币发送给attacker,然后将钱返还给闪电贷合约,即可完成攻击。原创 2022-10-29 22:07:06 · 1097 阅读 · 1 评论 -
capture the ether靶场题解(Lotteries)
这题同样要求我们猜answer,但他的answer是在每次Guess的时候生成的,无法通过web3进行查询,但我们明白一件事,合约之间的调用是在同一个区块当中的,也就是说,如果我们通过攻击合约进行调用guess,那么我们攻击合约生成的answer与guess生成的answer是相同的。这关他的answer是随机生成的,根据创建时候的区块数量进行生成,并且由于没有进行修饰符修饰,默认为internal变量,所以我们无法直接看到,但任何数据在区块链上都是无法隐藏的,我们通过web3库就能直接拿到该值。原创 2022-10-25 10:45:05 · 1207 阅读 · 0 评论 -
Ethernaut靶场实践(三)
首先他要我们前十六位全为我们自己的地址,我们将自己的地址直接转换就可以了,第17-32位全为零,由于uint强转是从后面取,也就是十六进制的第9-12位全为零,而1-8位不全为零,因此我们构造出一个Bytes8的数据,并跟我们的数据进行与运算,即可满足要求。随后调用,然后一步步找到剩余的gas,我们需要找到区块链浏览器中的第二个gas操作,并取该gas-2的值,因为gasleft本身也会消耗gas,再与8191进行mod运算,在初始gas处减少响应的结果,重复2-3次,即可成功,提交实例,攻击完成。原创 2022-10-10 22:08:25 · 1207 阅读 · 0 评论 -
solidity漏洞实践(一)
漏洞源码如下这里面我发现了两个漏洞一是在transfer中可能出现uint256溢出漏洞二是在fakeflashloan中可能出现的call注入漏洞于是要拿到flag的第一个条件可用溢出漏洞解决第二个条件可用call注入漏洞解决一.成功满足第一个require二.成功满足第二个require调用complete函数后成功获取flag!由于自己本身对该漏洞方面的题目不是很熟悉,所以几乎是看了别人的解决方法自己动手实践了一次,请多见谅。...原创 2022-06-20 23:04:30 · 327 阅读 · 0 评论 -
solidity漏洞实践(二)
三个solidity的复杂题型实践原创 2022-10-07 16:34:53 · 498 阅读 · 0 评论 -
Ethernaut靶场学习实践(二)
Ethernaut靶场7-12原创 2022-10-07 16:30:24 · 1768 阅读 · 1 评论 -
Ethernaut靶场学习实践(一)
ethernaut靶场分析原创 2022-10-03 19:28:55 · 646 阅读 · 0 评论