某60区块链安全之Create2实战一学习记录

这篇具有很好参考价值的文章主要介绍了某60区块链安全之Create2实战一学习记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

区块链安全

Create2实战一

实验目的

学会使用python3的web3模块
学会分析以太坊智能合约Create2引发的漏洞及其利用
找到合约漏洞进行分析并形成利用

实验环境

Ubuntu18.04操作机

实验工具

python3

实验原理

君士坦丁堡硬升级中引入了一个新操作码 CREATE2 ,它使用新的方式来计算常见的合约地址,让生成的合约地址更具有可控性
在 CREATE2 以前,CREATE指令创建的合约地址是通通过交易发起者(sender)的地址以及交易序号(nonce)来计算确定的。sender 和 nonce 进行 RLP 编码,然后用 Keccak-256 进行计算
CREATE2 指令则主要是根据创建合约的初始化代码(init_code)及盐(slat)生成

实验内容

合约中内置了利用create2操作码攻击问题,找到合约漏洞并形成利用,触发合约的SendFlag(address addr)事件即可
使用python3的web3模块远程利用漏洞并获取flag
实验地址为nc ip 10011

Create2实战一 实验步骤

获取合约地址和合约源代码
nc ip 10011连接到题目,输入1,获取部署合约的game account及token
某60区块链安全之Create2实战一学习记录,区块链,安全,学习

打开http://ip,输入上述分配的game account,点击Request获取eth
某60区块链安全之Create2实战一学习记录,区块链,安全,学习

nc ip 10011连接到题目,输入2,获取部署合约的地址及new token
某60区块链安全之Create2实战一学习记录,区块链,安全,学习

nc ip 10011连接到题目,输入4,获取合约源代码,或者在题目附件找到合约源代码
某60区块链安全之Create2实战一学习记录,区块链,安全,学习

分析合约源代码漏洞

pragma solidity ^0.5.10;

contract ETH11 {
   
    event SendFlag(address addr);
    address public target;

    function check(address _addr) public {
   
        uint size;
        assembly {
    size := extcodesize(_addr) }
        require(size > 0 && size <= 4);
        target = _addr;
    }

    function execute() public {
   
        require(target != address(0));
        target.delegatecall(abi.encodeWithSignature(""));
        selfdestruct(address(0));
    }

    function sendFlag() public payable {
   
        require(msg.value >= 1000000000000000000000000 ether);
        emit SendFlag(msg.sender);
    }
}

题目要求部署一个合约,合约代码大小不超过4字节;调用 check 函数,参数是我们部署的合约地址;调用 execute 函数,执行 delegatecall 到我们部署的合约内,但是,有个问题,我们没法在4个字节内 emit SendFlag
其实题目考查知识点为 Create2 的骚操作:在同一个地址上部署合约,合约的字节码可以不同,即在同一个地址上先后可部署不同的合约
所以题目的逻辑如下面4、5、6、7、8步骤所示:
用 create2 的骚操作,部署一个合约 0x33ff ,即 selfdestruct(msg.sender)
调用 check() ,让 target 为我们部署的合约地址
给我们部署的合约发一笔空交易,让它自毁
再次使用 create2 骚操作,在同一个地址部署合约,合约内容为 emit SendFlag(0)
调用 execute() ,就会执行我们第二次部署的合约的 emit SendFlag 事件,因为是 delegatecall 操作,所以还是相当于在原题目合约中进行的 emit SendFlag 操作,成功!
EXP利用文章来源地址https://www.toymoban.com/news/detail-754074.html

到了这里,关于某60区块链安全之Create2实战一学习记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 某60区块链安全之JOP实战一学习记录

    学会使用python3的web3模块 学会分析以太坊智能合约中中Jump Oriented Programming(JOP)问题 深刻理解EVM字节码 找到合约漏洞进行分析并形成利用 Ubuntu18.04操作机 python3 JOP 的思想和 ROP 是相似的:串联起一个个小的代码片段(gadget),达成一定的目的。 涉及到 JOP 的是如下三个字节

    2024年02月05日
    浏览(27)
  • 某60区块链安全之薅羊毛攻击实战一学习记录

    学会使用python3的web3模块 学会分析以太坊智能合约薅羊毛攻击漏洞 找到合约漏洞进行分析并形成利用 Ubuntu18.04操作机 python3 薅羊毛攻击指使用多个不同的新账户来调用空投函数获得空投币并转账至攻击者账户以达到财富累计的一种攻击方式。这类攻击方式较为普通且常见,只

    2024年02月04日
    浏览(30)
  • 某60区块链安全之薅羊毛攻击实战二学习记录

    ` 学会使用python3的web3模块 学会分析以太坊智能合约复杂场景下薅羊毛攻击漏洞及其利用 找到合约漏洞进行分析并形成利用 Ubuntu18.04操作机 python3 薅羊毛攻击指使用多个不同的新账户来调用空投函数获得空投币并转账至攻击者账户以达到财富累计的一种攻击方式。这类攻击方

    2024年02月04日
    浏览(39)
  • 某60区块链安全之未初始化的存储指针实战一学习记录

    学会使用python3的web3模块 学会分析以太坊智能合约未初始化的存储指针漏洞 找到合约漏洞进行分析并形成利用 Ubuntu18.04操作机 python3 在solidity语言中,像动态的数组、struct、mapping这样的复杂数据结构是不能直接在”栈”里面保存的,因为”栈”里只能保存单独的”字”,也就

    2024年02月03日
    浏览(30)
  • 某60区块链安全之未初始化的存储指针实战二学习记录

    学会使用python3的web3模块 学会分析以太坊智能合约未初始化的存储指针漏洞 找到合约漏洞进行分析并形成利用 Ubuntu18.04操作机 python3 在solidity语言中,像动态的数组、struct、mapping这样的复杂数据结构是不能直接在”栈”里面保存的,因为”栈”里只能保存单独的”字”,也就

    2024年02月05日
    浏览(29)
  • 某60区块链安全之Storage任意地址写实战学习记录

    学会使用python3的web3模块 学会分析以太坊智能合约中的Storage变量存储问题 找到合约漏洞进行分析并形成利用 Ubuntu18.04操作机 python3 EVM 中,有三个地方可以存储变量,分别是 Memory、Stack 和 Storage。Memory 和 Stack 是在执行期间临时生成的存储空间,主要负责运行时的数据存储,

    2024年02月05日
    浏览(26)
  • Solidity——create和create2部署合约

    部署智能合约是开发中必不可少的一个环节,常规的方式是借助像Hardhat这样的工具,通过编写ts部署脚本来实现。但在实际业务中,经常会遇到通过在合约中部署子合约的情况。比如添加Token流动池。这类需求在设计在上需要通过工厂合约来创建部署子合约来实现,它看起来

    2024年03月21日
    浏览(34)
  • Solidity——Create2

    君士坦丁堡硬升级中引入了一个新操作码 CREATE2 ,它使用新的方式来计算常见的合约地址,让生成的合约地址更具有可控性。 在 CREATE2 以前,CREATE指令创建的合约地址是通通过交易发起者(sender)的地址以及交易序号(nonce)来计算确定的。sender 和 nonce 进行 RLP 编码,然后用

    2024年01月16日
    浏览(35)
  • 某60物联网安全之IoT漏洞利用实操1学习记录

    学会使用fat模拟IoT设备固件 学会使用IDA分析设备固件内服务程序的逻辑漏洞 学会使用pwntools与IoT设备服务交互并触发漏洞 操作机:Ubuntu 20.04【用户名:user 密码:user】 qemu fat binwalk pwntools IDA pro IoT 设备中可能存在各种漏洞,总结来说,这些漏洞可以被大体划分为两大类,一

    2024年02月22日
    浏览(31)
  • solidity进阶第五课——Create2

    Create2操作码使我们在智能合约部署在以太坊网络之前就能预测合约的地址。Uniswap创建Pair合约用的就是Create2而不是Create。 Create是如何计算地址 智能合约可以由其他合约和普通账户利用Create操作码创建。 在这两种情况下,新合约的地址都以相同的方式计算:创建者的地址(通

    2023年04月08日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包