前言 近年来,各个大型CTF(Capture The Flag,中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式)比赛中都有了区块链攻防的身影,而且出现的题目绝大多数都是区块链智能合约攻防。此系列文章我们主要以智能合约攻防为中心,来剖析智能合约攻防的要点,前两篇我们分享了合约反编译,反汇编的基础内容。后续的文章中,我们会继续分享CTF比赛中智能合约常见题型(
前言 上篇我们详细分析了智能合约反汇编后的代码内容,包括多个反汇编指令的含义,数据在栈中的存储方式,并通过上下文关联关系梳理代码逻辑。本篇我们将继续分析上篇遗留的反汇编代码,通过上篇学习我们已对反汇编指令在栈和内存存储的有了一定了解,该篇我们将重点来分析反汇编指令表示的代码逻辑。 反汇编内容 合约源代码 pragma solidity ^0.4.24; contract Tee {
智能合约安全系列文章反汇编·上篇 前言 通过上一篇反编译文章的学习,我们对智能合于opcode的反编译有了基础的学习,对于初学者来说,要想熟练运用还得多加练习。本篇我们来一块学习智能合约反汇编,同样使用的是Online Solidity Decompiler在线网站,智能合约反汇编对于初学者来说,较难理解,但对于智能合约代码来说,只要能读懂智能合约反汇编,就可以非常清晰的了解到合约的代码逻辑,对审
零时科技 | 智能合约安全系列文章之反编译篇 前言 近年来,各个大型CTF(Capture The Flag,中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式)比赛中都有了区块链攻防的身影,而且基本都是区块链智能合约攻防。本此系列文章我们也以智能合约攻防为中心,来刨析智能合约攻防的要点,包括合约反编译,CTF常见题型及解题思路,相信会给读者带
一篇以前写的文,现在修改补充了些许,发了上来 前言 以太坊中的智能合约蜜罐相对于互联网蜜罐的目的有着本质的区别:后者着重在于诱导攻击,然后做检测分析,来收集攻击手法与漏洞;而前者更像是一场赌博的骗局,利用种种方法,诱导目标转账进入合约,完成韭菜收割。但是这个蜜罐的名词也是挺恰当的,就也这么叫了。 有趣的是智能合约蜜罐其目标锁定在智能合约开发者,智能合约代码审计人员,略懂区块链技术的信息安全人员(e
前言 这里继续接着"Ethernaut闯关录(上)"中的闯关模式继续对剩下的关卡进行闯关。 闯关斩将 King 闯关要求 合同代表一个非常简单的游戏:谁给它发送了比当前奖金还大的数量的以太,就成为新的国王。在这样的事件中,被推翻的国王获得了新的奖金,但是如果你提交的话那么合约就会回退,让level重新成为国王,而我们的目标就是阻止这一情况的发生。 合约代码 pragma solidity ^0.4
前言 Ethernaut是一个类似于CTF的智能合约平台,集成了不少的智能合约相关的安全问题,这对于安全审计人员来说是一个很不错的学习平台,本篇文章将通过该平台来学习智能合约相关的各种安全问题,由于关卡较多,而且涉及合约的分析、攻击流程的演示所以篇幅较长,经过缩减最终定为两篇文章来分享。 平台地址:https://ethernaut.zeppelin.solutions 环境准备 Chrome浏
前言 本次给大家带来的是“智能合约审计系列”的第三篇——“变量覆盖&不一致性检查”。 在这篇文章中将会给大家介绍一些智能合约开发者在合约开发过程中经常会忽略的变量初始化与赋值问题,包括智能合约开发者在开发中因粗心导致的“一致性检查”问题。 变量覆盖 漏洞简介 在智能合约语言 Solidity当中,存在Storage(存储器)和 Memory(内存)两个不同的概念。Storage变量是指永久
以太坊上的智能合约几乎都是开源的,没有开源的智能合约就无从信任。但有些智能合约没有开源,反编译是研究的重要方式,可通过直接研究EVM的ByteCode。 如何对合约进行逆向分析,下面结合ctf实例介绍区块链合约逆向如何开展,希望区块链入门者能从中学到知识。 ctf实例1 给了bytecode字节码及交互记录 ByteCode: 0x60806040526004361061006d5760
如何与无源码的智能合约交互 0x01 前言 主要介绍Ethernet(以太坊)的基于solidity的智能合约交互。分析题目并不是为了求解,而是为了解释每一步为什么这么做,是否有效。 需要事先配置redmix-idehttp://remix.ethereum.org/和metamask钱包环境,环境配置见solidity的官方文档,我使用的Chorme,火狐浏览器不知道为何总是无法
一、前言 时隔这么多天终于有时间把当时数字经济第二道区块链题目拿来复现。感觉第二题更偏向逻辑方面的漏洞,说白了就是来考察做题人对合约的逆向能力。总结来说,以太坊的漏洞相对于其他类型问题来说还算是非常少的,所以逆合约是一个非常重要的手段,只要能完美的逆出来合约,剩下的就相对容易许多。 比赛包括两道题目,这里我们分析一下第二道题目,第一题我们见https://xz.aliyun.com/t/6602
区块链之智能合约入门 第一步 安装环境 首先这里写的合约是指solidity合约,使用Remix IDE。所以我们第一步就是安装Remix IDE。remix ide是开发以太坊智能合约的神器,支持网页在线编写、部署和测试智能合约。网址http://remix.ethereum.org 可以选择先跳过安装环境这一步,直接使用在线的http://remix.ethereum.org 我这边的测试环境
本文为ConsenSys CTF,Ethereum Sandbox相关的一篇文章。 在了解这个题目前需要我们对以太坊和Solidity的基本概念进行理解。 题目一 我们的目标部署0x68cb858247ef5c4a0d0cde9d6f68dce93e49c02a的一个合约上。该合约没有经过代码验证操作,所以我们需要对该合约进行逆向从而获取源代码信息。 代码信息如下: // Decompiled
一、前言 本文继续前文的讲解。在前文中我们介绍了区块链中由公开变量做种子而引起的安全问题;有些合约使用区块哈希作为变量并将其放入合约函数中作为某种读博游戏的判定依旧。 由于这些随机数并非真正的“随机”,所以其安全隐患也是巨大的。本文我们继续介绍四种随机数漏洞类型。 二、基于区块哈希的随机数问题 block.blockhash(block.number-1)。 许多合约使用blockhash作为生产
一、前言 分析了如此多的合约与攻击案例后,我发现随机数是经常出现的一个话题。在CTF题目中经常能见到随机数的预测。 以太坊作为数字货币的初始平台之一,已经在市面上进行了极广的普及。对于以太坊来说,其经常应用在ERC20、轮盘、彩票、游戏等应用中,并利用Solidity完成对合约的编写。作为区块链的应用,以太坊同样是去中心化的、透明的。所以许多赌博游戏、随机数预测等相关应用需要精心设计,否则就会产生