首页 > 其他分享 >blockchain | 基于ethers.js的ctf合约攻击模板

blockchain | 基于ethers.js的ctf合约攻击模板

时间:2023-04-06 17:14:40浏览次数:42  
标签:console log await blockchain js ctf let result ethers

blockchain | 基于ethers.js的ctf合约攻击模板

之前做题用的是truffle命令行和truffle exec来进行编写代码,封装的层级比较高,这个框架主要还是用来开发比较方便,看了大师傅的wp(https://www.seaeye.cn/archives/497.html)以后觉得还是得写一个自己用起来顺手的攻击模板。

使用ethers.js v6(网上没有中文文档,是目前的最新版本)
文档:https://docs.ethers.org/v6/api/contract/

暂时写好了是这样的模板如下【遇到许许多多的坑,特别是构造合约的参数那里】:

const ethers = require('ethers');
const fs = require('fs');

let url = "http://127.0.0.1:8545";
let Provider = new ethers.getDefaultProvider(url);

let privateKey = "0x957c03cef7400defc7585d5dd81c48455557aa29c12c627ad0fd17d73effe696"
let wallet = new ethers.Wallet(privateKey, Provider);
//let wallet = ethers.Wallet.createRandom();
console.log(wallet.address)

// 等一手货币
const readline = require("readline");
let r1 = readline.createInterface({
    input: process.stdin,
    output: process.stdout
})
r1.question("ok?", async function (answer) {
    console.log('ok!');
    await _start();   // 开始操作
    r1.close();
})

let _start = async function(){
	// 看看是否到账
	let balance = await Provider.getBalance(wallet.address)
	console.log(balance)

	// 获取abi[这里abi使用的是truffle solidity编译好的json文件]
	let jsonabi = JSON.parse(fs.readFileSync('Checkin.json', 'utf8')).abi
	const abi = new ethers.Interface(jsonabi);
	console.log(abi.format("full"))

	// 获取合约
	// 合约地址: 0xc32813d108cf5E21189Cb33fc60c064a90E2Cbb4
	let contract = new ethers.Contract(
			"0xc32813d108cf5E21189Cb33fc60c064a90E2Cbb4",
			abi,
			(await Provider.getSigner(0))
		)
	let result = await contract.getstr()
	console.log(result)

	// 进行攻击
	let tx = await contract.setMsg('Welcome to VNCTF', 65535)
	await tx.wait()
	result = await contract.getstr()
	console.log(result)

	// 验证
	result = await contract.isSolved()
	console.log(result)
}

标签:console,log,await,blockchain,js,ctf,let,result,ethers
From: https://www.cnblogs.com/Mz1-rc/p/17293371.html

相关文章

  • vue.config.js 配置
    const{defineConfig}=require('@vue/cli-service')  //按需引入  //constAutoImport=require('');constAutoImport=require('unplugin-auto-import/webpack')constComponents=require('unplugin-vue-components/webpac......
  • NestJs 异常过滤器
    文档:https://docs.nestjs.cn/9/exceptionfilters实现新建文件common下面新建filter.ts实现让我们创建一个异常过滤器它负责捕获作为HttpException类实例的异常并为它们设置自定义响应逻辑为此,我们需要访问底层平台Request和Response我们将访问Request对象,以便提取原......
  • HTTP JSON接口模拟工具interfake的使用(模拟接口返回json数据)
    场景在与第三方系统进行模拟对接时,需要本地根据接口文档的示例json数据快速模拟出来接口进行调试用。Interfake官方github地址:https://github.com/basicallydan/interfakeInterfake能简便地创建虚假的HTTPAPI,只需简单几行代码就可以创建模拟JSON接口(使用命令行方式也可以......
  • go语言发送请求后接收到json如何提取其中指定参数
    由于用过python的缘故,一开始想着直接取后来发现并不行,于是上网查找资料发现需要定义结构体绑定参数,后来定义完结构体后发现并没有解决问题,而且过程较为繁琐,于是想着先将接收到的数据转为字符串body,_:=io.ReadAll(response.Body)fmt.Println(string(body))利用上面的代码发......
  • ctf4
    CTF4下载地址:https://download.vulnhub.com/lampsecurity/ctf4.zip1、主机发现nmap扫描sudonmap-sn192.168.239.0/24发现192.168.239.135是靶机地址sudonmap-sn192.168.239.0/24StartingNmap7.93(https://nmap.org)at2023-04-0409:05CSTNmapscanreport......
  • ctf5
    CTF5下载地址:https://download.vulnhub.com/lampsecurity/ctf5.zip1、主机发现sudonmap-sn192.168.239.0/24[sudo]de1te的密码:StartingNmap7.93(https://nmap.org)at2023-04-0411:17CSTNmapscanreportfor192.168.239.1Hostisup(0.00053slatency).MA......
  • vue里cdn引入改为本地js文件引用
     问题vue项目cdn引用会出现网络加载不了问题 vue项目cdn引用  改为本地public/index.html引入首先把cdn的链接复制在浏览器里打开或直接下载下来把js文件放到public文件夹下面  在index.html里引入,注意生产环境才加载出来 ......
  • js中通过数据库查询省,后自动带出市显示的问题
    //注册地址varprovince=SQL("selectprovincefromprojectwherecode='"+code+"'andisdelete=0orderbyindatelimit1");$("#field_2c923daf70a540290170aa8ad7a102ff").val(province);varcity=SQL("selectcityfrom......
  • [BUUCTF] findit
    a=['T','h','i','s','I','s','T','h','e','F','l','a','g','H','o','m','e�......
  • 【过滤器设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
    简介过滤器模式(FilterPattern)或标准模式(CriteriaPattern),是一种结构型模式。这种模式允许使用不同的标准条件来过滤一组对象,并通过逻辑运算的方式把各条件连接起来,它结合多个标准来获得单一标准。例子将创建一个Person对象、Criteria接口和实现了该接口的实体类,来过滤Perso......