Eth合约攻击续】的更多相关文章

合同代表一个非常简单的游戏:谁给它发送了比当前奖金还大的数量的以太,就成为新的国王.在这样的事件中,被推翻的国王获得了新的奖金,但是如果你提交的话那么合约就会回退,让level重新成为国王,而我们的目标就是阻止这一情况的发生. 合约代码 pragma solidity ^0.4.18; import 'zeppelin-solidity/contracts/ownership/Ownable.sol'; contract King is Ownable { address public king…
前言 Ethernaut是一个类似于CTF的智能合约平台,集成了不少的智能合约相关的安全问题,这对于安全审计人员来说是一个很不错的学习平台,本篇文章将通过该平台来学习智能合约相关的各种安全问题,由于关卡较多,而且涉及合约的分析.攻击流程的演示所以篇幅较长,经过缩减最终定为两篇文章来分享.平台地址:https://ethernaut.zeppelin.solutions 环境准备 Chrome浏览器 插件——以太坊轻钱包MetaMask(https://metamask.io/) 在MetaMas…
截取两篇文章:第一遍文章说的是智能合约能不能修改的问题: ETC转到ETH地址以及转币进ETH智能合约账户能不能转出来? 第0章 引言 如果ETC充值到了ETH地址上,能找回来吗?答案是不一定. ETH转到别的ETH地址上,也是有可能再也弄不出来的. 第1章 以太坊的两类账户 以太坊有两类账户,外部账户和合约账户. 外部账户是由公钥和私钥组成的.我们绝大多数用户生产的以太坊钱包都属于这一类账户,私钥可以决定这个账户里的币,包括以太坊和ERC20币. 合约账户是由一个地址和对应存储的一些代码组成的…
出处:https://cloud.tencent.com/developer/article/1192548 深度解析Solidity的17个坑及超详细避坑指南 写的很好,好好学习 1. Re-Entrancy重新入口,可重入性 本博客the security of smart contract- 1中已经解释过原因,这里用例子说明: pragma solidity ^0.4.23;contract EtherStore{    uint public withdrawalLimit = 1 e…
什么是ERC20 token 市面上出现了大量的用ETH做的代币,他们都遵守REC20协议,那么我们需要知道什么是REC20协议. 概述 token代表数字资产,具有价值,但是并不是都符合特定的规范. 基于ERC20的货币更容易互换,并且能够在Dapps上相同的工作. 新的标准可以让token更兼容,允许其他功能,包括投票标记化.操作更像一个投票操作 Token的持有人可以完全控制资产,遵守ERC20的token可以跟踪任何人在任何时间拥有多少token.基于eth合约的子货币,所以容易实施.只…
前言 2019强网杯CTF智能合约题目--babybank wp及浅析 ps:本文最先写在我的新博客上,后面会以新博客为主,看心情会把文章同步过来 分析 反编译 使用OnlineSolidityDecompiler对合约进行逆向,获取合约源码伪代码 参考其他师傅的分析,贴出美化之后的合约源码 pragma solidity ^0.4.23; ​ contract babybank { // 0xe3d670d7 0 mapping(address => uint) public balance;…
以太坊ETH中智能合约消耗的Gas.Gas Limit是什么? 数字货币交易一般是有交易费的,比特币(BTC)的交易费很容易理解,就是直接支付一定额度的BTC作为手续费.而以太坊(ETH)的交易费表面上看也是如此,需要支付一定额度的ETH,但实际内部运行要用到一个叫Gas的概念. 以太坊使用了智能合约,交易要是按照智能合约的规定一步一步执行命令,每执行一个命令都会产生一定的消耗,这个消耗用Gas作为单位,另外,不同命令消耗的Gas数量也不相同. 每笔交易都被要求包括一个Gas limit(有的时…
首先要开发以太坊的智能合约,需要EVM(以太坊虚拟机),也就是需要运行的环境,我们可以通过 geth 来设置开发环境: geth --datadir testNet --dev console 2>> test.log 命令参数说明(更多命令详解可阅读Geth命令用法-参数详解篇):–dev 启用开发者网络(模式),开发者网络会使用POA共识,默认预分配一个开发者账户并且会自动开启挖矿.–datadir 后面的参数是区块数据及秘钥存放目录.第一次输入命令后,它会放在当前目录下新建一个testN…
ETH的智能合约一般用Solidity语言编写,懂点基本solidity语法会更好地测试 测试中需要用到的工具: 一份智能合约 Remix(一个在线IDE,用来编译.编辑.部署智能合约,需要FQ才能使用)点我跳转到Remix ETH测试币-领取地址 ETH测试网络的区块浏览器 ETH钱包MetaMask(Chrome插件) 下图为remix在线IDE的页面: 测试合约的三个步骤: 1.编译合约代码 (需要FQ) 开发智能合约,一般使用Truffle框架,合约写好后的目录结构如下.其中,contr…
讲溢出攻击之前,先给大家讲个故事:2014年的时候,美国的宾夕法尼亚州的某个小镇上发生了一个乌龙事件,征兵系统对一万多名1893年到1897出生的男子发去信函,要求他们注册参军,否则面临罚款和监禁.收到信函的人啼笑皆非,因为这些信函指明的人都是大部分都是他们已故的祖父外祖父.导致这个事件的原因就是“千年虫”. 严格的说“千年虫”属于程序的一个BUG.因为在上个世纪,计算机的存储空间很小,使用人员为了最大化利用计算机的存储空间,规定了在计算机中存储年份的时候使用两位数字来表示,如“1998”年,那…
以太坊(Ethereum)是一提供个智能合约(smart contract)功能的公共区块链(BlockChain)平台. 本文介绍了一个简单的以太坊智能合约的开发过程. 开发环境 在以太坊上开发应用,首先需要安装其客户端,本文使用基于Go语言的Geth, 其官网为https://github.com/ethereum/go-ethereum. 第一步 在命令行环境中输入以下命令, 连接到以太坊测试网络 geth --testnet --fast --cache=512 console 第二步…
一.概述 ETH 网络这里就不介绍了,这篇文章主要记录在以太坊主网和测试网络部署一个智能合约,也就是如何发币. 二.部署合约需要的生产工具      准备工具前,建议大家准备个VPN,因为会访问国外网站. 我这里是在 myxgj.com 网站买的代理. 1.钱包.钱包使用谷歌Chrome浏览器插件MetaMask . 如何装插件,如何注册账号,不详细写了.网络上很多介绍,大家可以搜索. 2.获取token.这里需要区分测试网络和主网token.测试网络我使用Rinkeby测试网络,如何获取Rin…
以太坊智能合约开发:让合约接受转账 在以太坊智能合约开发中,通常会有向合约地址进行转账的需求,那么有几种向合约地址进行转账的方式呢? 有三种方式: 部署合约时转账 调用合约提供的方法 直接向合约地址进行转账 但有一个问题,以太坊的智能合约默认是拒绝来自任何地址的转账,那么如何让合约能够支持接收转账呢? 1.部署转账 在进行合约开发时,如果想要在部署时,直接向该合约进行转账,只需要给构造函数中添加payable修饰符. 示例: contract Test { // 构造函数添加payable修饰符…
0x00 前言 Solidity(http://solidity.readthedocs.io/en/v0.4.24/) 是一种用与编写以太坊智能合约的高级语言,语法类似于 JavaScript. Solidity 编写的智能合约可被编译成为字节码在以太坊虚拟机上运行.Solidity 中的合约与面向对象编程语言中的类(Class)非常类似,在一个合约中同样可以声明:状态变量.函数.事件等.同时,一个合约可以调用/继承另外一个合约. 在 Solidity 中提供了 call.delegateca…
现实世界中的网络都是有带宽限制的,想象一下,一个访问量稳定的网站,突然有人利用某种方式爆发式的将网站的访问量提升,这个时候系统会作何反应?如果系统没有合理的防DOS攻击的方式,这种时候往往会造成服务器瘫痪/崩溃. DOS,即Denial of Service,拒绝服务.造成服务器拒绝服务的攻击被称为DOS攻击.早在区块链之前,互联网世界就存在的一种攻击方式.在智能合约中,往往有一部分函数的执行是依赖于外部调用的结果,这种情况下又没有对外部返回的结果做严格控制,比如外部长期不返回或者返回结果非预期…
Fomo3D过去的一周内赚足了噱头,一场光明正大的"庞氏"游戏疯狂吸金,在链得得此前的报道中提到"Fomo3D的开发者,是对生态有深刻理解的现实主义者.Fomo3D鼓励黑客去黑掉智能合约,来证明以太坊有多脆弱."Fomo3D核心成员Justo直指v神:"我已经发现了可以毁灭以太坊虚拟机(EVM)的'核武器漏洞'."详情请见<[链得得独家]庞氏游戏"Fomo3D的真实意图:黑掉脆弱以太坊>. 开发者虽然狂妄,但是却被看作是足够…
实现区块链的跨链,最主要的诉求就是Token的转移,而Token的跨链转移又分为充币和提币2种操作.以PalletOne调色板来说,如果要把ETH跨链到PalletOne上来流转,就是ETH的充币操作,要将PalletOne上的PETH(PalletOne上发行的与ETH1:1等值兑换的Token)跨链回到以太坊,变成ETH,就是ETH的提币操作. ETH的充币 这里的过程其实和我之前的一篇博客PalletOne调色板Token PTN跨链转网的技术原理 相似,只是我们需要在PalletOne上…
智能合约和 DApp https://www.jianshu.com/p/5e7df3902957 2018.10.08 19:50:41字数 3,403阅读 9,819 2017年11月份和2018年5月份的技术雷达,都将Ethereum for decentralised applications. 放到了 Technique 象限的 ASSESS 环里,鼓励在数字货币和银行等金融领域之外多尝试构建崭新的DApp.那我们就来聊聊什么是去中心化应用.   技术雷达 Ethereum for D…
主要章节如下: Solidity安全贴士 已知的攻击手段 竞态 可重入 交易顺序依赖 针对Gas的攻击 上溢/下溢 工程技术 参考文献 这篇文档旨在为Solidity开发人员提供一些智能合约的security准则.当然也包括智能合约的security理念.bug赏金计划指南.文档例程以及工具. 一般哲学 以太坊和其他复杂的区块链项目都处于早期阶段并且有很强的实验性质.因此,随着新的bug和安全漏洞被发现,新的功能不断被开发出来,其面临的安全威胁也是不断变化的.这篇文章对于开发人员编写安全的智能合…
简介 以太坊(Ethereum)是一提供个智能合约(smart contract)功能的公共区块链(BlockChain)平台. 本文介绍了一个简单的以太坊智能合约的开发过程. 开发环境 在以太坊上开发应用,首先需要安装其客户端,本文使用基于Go语言的Geth, 其官网为https://github.com/ethereum/go-ethereum. 第一步 在命令行环境中输入以下命令, 连接到以太坊测试网络 geth --testnet --fast --cache=512 console 第…
以太坊系列之十六: 使用golang与智能合约进行交互 以太坊系列之十六: 使用golang与智能合约进行交互 此例子的目录结构 token contract 智能合约的golang wrapper 部署合约 1.账户问题 2. 连接到geth 3. 部署合约 4. 测试部署结果 golang 查询合约 官方提供的使用web3来进行智能合约的部署,调用等,实际上使用go也是可以的,这样更接近geth源码,更多的库可以使用. 此例子的目录结构 方便大家对照使用 我是在windows下进行的,在li…
如果你对于以太坊智能合约开发还没有概念(本文会假设你已经知道这些概念),建议先阅读入门篇. 就先学习任何编程语言一样,入门的第一个程序都是Hello World.今天我们来一步一步从搭建以太坊智能合约开发环境开始,讲解智能合约的Hello World如何编写. 开发环境搭建 Solidity安装 强烈建议新手使用Browser-Solidity来进行开发. Browser-Solidity是一个基于浏览器的Solidity,就可以不用安装Solidity,本文的Hello World教程也将基于…
前言: 想实现像arpsoof一样的工具 arp断网攻击原理: 通过伪造IP地址与MAC地址实现ARP欺骗,在网络发送大量ARP通信量.攻击者 只要持续不断发送arp包就能造成中间人攻击或者断网攻击. 0x01: 准备工作 Linux环境下:(windows环境下各种错误,其中有个错误是缺少windows.dll至今无法解决) 有scapy模块 如果没有进行安装 py2安装方法 pip install scapy py3安装方法 pip install scapy3 我们要用到scapy模块里的…
这是Solidity教程系列文章第8篇介绍Solidity API,它们主要表现为内置的特殊的变量及函数,存在于全局命名空间里. 写在前面 Solidity 是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合约有所了解, 如果你还不了解,建议你先看以太坊是什么 欢迎订阅区块链技术专栏阅读更全面的分析文章. Solidity API 主要表现为Solidity 内置的特殊的变量及函数,他们存在于全局命名空间里,主要分为以下几类: 有关区块和交易的属性 有关错误处理 有关数学及加密功能 地…
智能合约开发用solidity编程语言部署在以太坊这个区块链平台,本文提供一个官方实战示例快速入门,用例子深入浅出智能合约开发,体会以太坊构建去中心化可信交易技术魅力.智能合约其实是"执行合约条款的计算机交易协议".区块链上的所有用户都可以看到基于区块链的智能合约. 维基上说智能合约(英语:Smart contract )是一种旨在以信息化方式传播.验证或执行合同的计算机协议.智能合约允许在没有第三方的情况下进行可信交易.这些交易可追踪且不可逆转.智能合约概念于1994年由Nick S…
  Remix 是一個开源的 Solidity 智能合约开发环境,提供基本的编译.部署至本地或测试网络.执行合约等功能.Solidity 是 以太坊Ethereum 官方设计和支持的开发语言,专门用于编写智能合约. 本文希望将一个很简单的代币合约(只能发行和转账),部署在本地和测试网络上,测试下它的功能. 详细描述使用 Remix 的步骤及使用上可能碰到的问题. 之前开发过以太坊Ethereum智能合约,但没有记录过开发的过程和碰到的问题,觉得挺可惜.这次重新开始,从最基础开始,一步步学习. 开…
我们可使用web3.js框架的estimateGas函数获得一个以太坊智能合约的Gas估计值 ,通过执行一个消息调用或交易,该消息调用或交易直接在节点的VM中执行,并未在区块链中确认,函数会返回估算使用的gas量. 函数调用: web3.eth.estimateGas(callObject [, callback]) 参数: 在 web3.eth.sendTransaction 中, 参数大都是可选的. 1. Object - 要发送的交易对象: from: String - 用来传送的账户地址…
这两天币圈链圈被美链BEC智能合约的漏洞导致代币价值几乎归零的事件刷遍朋友圈.这篇文章就来分析下BEC智能合约的漏洞 漏洞攻击交易 我们先来还原下攻击交易,这个交易可以在这个链接查询到. 我截图给大家看一下: 攻击者向两个账号转移57896044618...000.792003956564819968个BEC,相当于BEC凭空进行了一个巨大的增发,几乎导致BEC价格瞬间归零. 下面我们来分析下这个攻击过程. 合约漏洞分析 我们先来看看BEC智能合约的代码, BEC在合约中加入一个批量转账的函数,…
先了解相关指令,再观看比较合适:http://truffle.tryblockchain.org/ 安装: 先完成上一条博客的安装,再来进行下面的操作:http://www.cnblogs.com/tianlongtc/p/8877579.html #第一个终端 sudo apt install npm #安装npm sudo npm install npm@latest -g #升级npm sudo npm install -g n #安装nodejs的模块n sudo n stable #下…
写在前面 在最初学习以太坊的时候,很多人都是自己创建以太坊节点后,使用geth与之交互.这种使用命令行交互的方法虽然让很多程序员感到兴奋(黑客帝国的既视感?),但不可能指望普通用户通过命令行使用Dapp.因此,我们需要一种友好的方式(比如一个web页面)来与智能合约交互,于是问题的答案就是web3.js. Web3.js Web3.js是以太坊官方的Javascript API,可以帮助智能合约开发者使用HTTP或者IPC与本地的或者远程的以太坊节点交互.实际上就是一个库的集合,主要包括下面几个…