黑客松大赛Public Chain题目Writeup:如何找到漏洞并进行攻击造成Remote DoS?

点击图片查看原图
  • 发布日期:2019-10-30
  • 有效期至:长期有效
  • 区块快讯区域:全国
  • 浏览次数84
  • 留言咨询
详细说明
作者:PeckShield漏洞研究总监Edward Lo

来源:DVPNET

编者注:原标题为《DVP黑客松大赛韩国站Public Chain题目Writeup》


Writeup 1: Remote DoS

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

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

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

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

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

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

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

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

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

这道题目就是将memoryMStore8注解掉,如此一来会造成两个问题:

1. EVM不会计算收取gas,因为memorySize永远为0

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

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


Writeup 2: RCE

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

该企业最新区块快讯
 
更多>最新产品信息:
联系方式

您还没有登录,请登录后查看详情

推荐资讯
区链圈
卫浴之都 | 建材头条 | 家具头条 | 家居之家 | 装饰之家 | 新基建头条 | 门窗之家 | 区块联盟 | 博一建材网 | 新基建之家 | 老姚之家 | 灯饰之家 | 电气之家 | 全景头条 | 陶瓷之家 | 照明之家 | 防水之家 | 防盗之家 | 博一建材 | 卫浴之家 | 区快洞察 | 锦州建材 | 丹东建材 | 本溪建材 | 抚顺建材 | 鞍山建材 | 西安建材 | 商洛建材 | 安康建材 | 榆林建材 | 汉中建材 | 延安建材 | 渭南建材 | 咸阳建材 | 宝鸡建材 | 铜川建材 | 兰州建材 | 甘南建材 | 临夏建材 |
建材 | 720全景 | 企业之家 | 移动社区 | 关于我们  |  联系我们  |  网站地图 | 排名推广 | 网站留言 | RSS订阅 | sitemap | 粤ICP备14017808号
(c)2015-2018 BO-YI.COM SYSTEM All Rights Reserved
Powered by 家居联盟