某60区块链安全之Storage任意地址写实战学习记录

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

区块链安全

Storage任意地址写实战

实验目的

学会使用python3的web3模块
学会分析以太坊智能合约中的Storage变量存储问题
找到合约漏洞进行分析并形成利用

实验环境

Ubuntu18.04操作机

实验工具

python3

实验原理

EVM 中,有三个地方可以存储变量,分别是 Memory、Stack 和 Storage。Memory 和 Stack 是在执行期间临时生成的存储空间,主要负责运行时的数据存储,Storage 是永久存在于区块链中的变量。
EVM 对每一个智能合约维护了一个巨大的 key-value 的存储结构,用于持久化存储数据,我们称这片区域为 Storage。除了 map 映射变量和变长数组以外的所有类型变量,在 Storage 中是依次连续从 slot 0 开始排列的,一共有 2^256 个 slot,每个 slot 可以存储 32 字节的数据。Storage 存储结构是在合约创建的时候就确定好的,它取决于合约所声明状态变量,但是内容可以通过 Transaction 改变。
Storage 变量大致分为 4 种类型:定长变量、结构体、map 映射变量和变长数组。如果多个变量占用的大小小于 32 字节,按照紧密打包原则,会尽可能打包到单个 slot 中。
在以太坊 EVM 的设计思路中,所有的 Storage 变量共用一片大小为 2^256*32 字节的存储空间,没有各自的存储区域划分。Storage 空间即使很大也是有限大小,当变长数组长度很大时,考虑极端情况,如果长度达到 2^256,则可对任意 Storage 变量进行读写操作,造成未知影响。

实验内容

合约中内置了Storage变量存储问题,找到合约漏洞并形成利用,触发合约的SendFlag(address addr)事件即可
使用python3的web3模块远程利用漏洞并获取flag
实验地址为nc ip 10013

Storage任意地址写实战 实验步骤

获取合约地址和合约源代码
nc ip 10013连接到题目,输入1,获取部署合约的game account及token
1

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

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

nc ip 10013连接到题目,输入4,获取合约源代码,或者在题目附件找到合约源代码
某60区块链安全之Storage任意地址写实战学习记录,区块链,安全,学习文章来源地址https://www.toymoban.com/news/detail-753403.html

分析合约源代码漏洞

pragma solidity ^0.4.23;

contract ETH13 {
   

    address public owner;
    bytes32[] public codex;

    event SendFlag(address addr);

    constructor() public {
   
        owner = msg.sender;
    }

    function getflag() public {
   
        require

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

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

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

相关文章

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

    学会使用python3的web3模块 学会分析以太坊智能合约Create2引发的漏洞及其利用 找到合约漏洞进行分析并形成利用 Ubuntu18.04操作机 python3 君士坦丁堡硬升级中引入了一个新操作码 CREATE2 ,它使用新的方式来计算常见的合约地址,让生成的合约地址更具有可控性 在 CREATE2 以前,

    2024年02月05日
    浏览(37)
  • 某60区块链安全之Create2实战二学习记录

    学会使用python3的web3模块 学会分析以太坊智能合约中的伪随机数问题 学会利用Create2可在同一地址部署不同合约特性解决伪随机数问题 找到合约漏洞进行分析并形成利用 Ubuntu18.04操作机 python3 君士坦丁堡硬升级中引入了一个新操作码 CREATE2 ,它使用新的方式来计算常见的合约

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

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

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

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

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

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

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

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

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

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

    2024年02月22日
    浏览(42)
  • 汇编原理学习记录:物理地址=段地址*16+偏移地址

    8086计算机拥有20根地址总线和16根数据总线,地址总线中的16根和数据总线存在复用 数据总线的数量决定了数据总线的宽度,决定了处理器的位数,有多少根数据总线就是多少位的处理器。 在现代计算机系统中,寄存器的位数和数据总线的位数总是保持一致或相近的。 地址的

    2024年02月10日
    浏览(40)
  • solidity学习记录 3 (地址与交易)

    智能合约中的地址 合约中的地址等同于uint160类型 合约当中的地址可以被比较 地址中余额的获取与转账操作  那新建一个地址类型时可以通过address.balance 来获取当前地址的余额 若一个函数中需要进行转账操作需要在函数中加上payable this指向的是当前合约的地址 若对当

    2023年04月24日
    浏览(34)
  • 日常学习记录之容器,云服务,区块链基本概念

    云服务:Sssa, Issa,Pssa. 容器:一个容器包含了完整的运行时环境:除了应用程序以外,这个应用所需的全部依赖,类库,其他二进制文件,配置文件等,都同意被打入了一个成为容器镜像的包中。通过将应用程序本身,和其依赖容器化,操作系统发行版本和其他基础环境造成

    2024年01月20日
    浏览(47)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包