用户
搜索
  • TA的每日心情
    开心
    2018-10-12 18:11
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    i春秋-脚本小子

    Rank: 2

    9

    主题

    11

    帖子

    79

    魔法币
    收听
    0
    粉丝
    0
    注册时间
    2018-10-11
    发表于 2019-10-28 17:57:28 0308
    签名墙2.jpeg

    本文由PeckShield漏洞研究总监Edward Lo撰写


    Writeup 1:Remote DoS


    这是公链项目的第一题,参赛者需要找到漏洞并进行攻击造成Remote DoS。服务器上跑的是经过修改的geth结点,而问题点就在EVM中。


    首先来看看EVM正常执行流程:


    1.png


    EVM在执行合约时,会一步一步提取其中的OPCode,并做相对应的检查:

    • OPCode需要的传参是否已放到栈(stack)上,是否有足够空间能放回传值

    • EVM目前是否在readonly模式(例如以static_call方式呼叫),若是则需符合规则,不能对链上状态有任何改动(例如转帐)




    2.png


    • 计算OPCode需要的内存大小,并根据目前的内存情况决定如何收取gas费用并扩容内存




    接下来我们以OPCode mstore8为例,来看看到底怎麽计算。
    3.png


    如上所示,p是offset,v是想写入的内容
    4.png


    EVM会调用memoryMStore8计算回传所需要的内存大小,接着调用gasMStore8来计算所需的gas费用
    5.png


    这道题目就是将memoryMStore8注解掉,如此一来会造成两个问题
    • EVM不会计算收取gas,因为memorySize永远为0

    • 内存不会扩容,攻击者可以在任意offset写入一个可控byte内容

    如此一来,只需布置会调用mstore8的恶意合约便可以进行攻击
    6.png





    Writeup 2:RCE


    基于上一道题目,我们可以在任意offset写一个byte,理论上便能透过它执行RCE。此题的技术难度跟水平要求较高,攻击者必须结合漏洞并布置巧妙构思过的恶意合约,将shellcode写入远端节点来完成RCE


    双11又又又来了?DVP双重活动,让你成为锦鲤本鲤 活动详情:https://mp.weixin.qq.com/s/8TvnUKBv83pU2XaA850L8g DVP去中心化漏洞平台 https://dvpnet.io/ ,双11诚邀
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册