首页 > 其他分享 >NewStarCTF Week3 Blockchain

NewStarCTF Week3 Blockchain

时间:2022-10-09 21:13:27浏览次数:83  
标签:NewStarCTF Blockchain greeting number owner 地址 msg flag Week3

前言:最近学了点blockchain,正好NewStarCTF这周上了题,赶紧来练练手,出题人很友好,代码都很简单,适合刚了解区块链的新手入门

Checkin

先安装Metamask,再去Goerli水龙头领币
然后nc连接124.221.212.109 10000
首先选择选项一,服务器会发给我们一个账户地址和token,按要求向账户转0.001eth

用Metamask向该地址转账即可

转账完成后选择选项二,输入一中的token进行部署合约,拿到交易地址,在etherscan中查找对应的交易,即可找到交易哈希对应的生成合约的地址

之后选择选项四查看合约代码,把代码copy到remix中

简单审计之后可以发现只需greeting==key即可,我们令_greeting='HelloNewstarCTF',然后通过setGreeting函数让greeting等于_greeting就可以解决问题
接下来先在左侧的Solidity compiler中编译checkin.sol


Meta mask连接好remix之后在at address处输入上面的交易地址,点击at address连接到对应链上,然后在_greeting上输入HelloNewstarCTF并transact即可

与合约交互完成之后,就可以拿到flag了
flag{Ea2y_B1ockChain_Ch3ckin}

同时在etherscan上能看到合约的事件被触发了,可以看到我们发送的消息

Guess Number

选项二查看源码
简单审计下代码不难发现,想要触发isSolve(),需要让guess_number=number

由于题目给的是一个固定的地址,可以看到之前有人在合约上进行交互了,这些Method为Guess的就是其他人发送的包含_greeting的msg

查看其中一个交互成功,且存在Logs项的交易(存在这一项说明这笔交易触发了事件)

通过查看这个交易的input数据并解码,就可以得到我们需要的number了,guess_number=7810111911511697114678470

发送guess_number,交易完成后在etherscan上就可以看到本次交易的tx hash,提交tx hash即可得到flag,flag{Wh4t_1s_th3_numb3r}

The Chosen One

这题部署合约的步骤与第一题类似,不再赘述

通过审计代码可以发现,想要触发isSolve(),需要调用getflag()函数,而只有owner才有权限调用getflag()函数,所以我们的目标是成为owner

    function chooseone() public{
        require(uint(msg.sender) & 0xffff==0xabcd);
        owner = msg.sender;
    }

这时我们可以注意到chooseone()函数中有一句
owner = msg.sender;
即让owner为信息发送者,它的条件是uint(msg.sender) & 0xffff==0xabcd
其意思是需要msg.sender的地址后四位为abcd,所以我们要做的就是创建一个地址后四位为abcd的账户,然后用该账户进行交互即可用
但是以太坊账户地址的生成是基于Hash算法的,具有随机性,我们要怎么得到末四位指定的地址呢?
通过Google,发现一个网站https://vanity-eth.tk/,这个网站可以帮助我们获得指定前缀或者后缀的以太地址账号

指定后四位为abcd,一段时间后得到符合要求的地址,通过私钥导入Metamask


然后把remix上的账户改成新建的账户,先进行chooseone,待交易完成后getflag即可


最后输入之前生成的token和交易的tx hash,得到flag flag{Y0u_ar3_th3_ch00s3n_0n3}

标签:NewStarCTF,Blockchain,greeting,number,owner,地址,msg,flag,Week3
From: https://www.cnblogs.com/briyctf/p/16753799.html

相关文章

  • NewStarCTF学习笔记-WEEK1
    WEEK1returntotext[text区域]​ 通过向栈上堆砌长度足够且合适的"垃圾信息"改写ret指令指向的地址,执行对应函数​ 注意点:保护,遇上Canary要进行绕过常见的Cana......
  • NewStarCTF2022
    Re艾克体悟题方法1.frida练习一下//a.jsJava.perform(function(){letFlagActivity=Java.use("com.droidlearn.activity_travel.FlagActivity");FlagAc......
  • week3
    title:week3tags:nullcategories:nulldate:2022-08-1312:25:54week31.yum私有仓库的实现及博客输出2.阅读《图解TCP/IP》一书,地址:https://leon-wtf.github.......
  • AcWing秋招每日一题——week3
    1、跳跃游戏题目给你一个整数数组 arr ,你一开始在数组的第一个元素处(下标为0)。每一步,你可以从下标 i 跳到下标 i+1、i-1或者j:i+1需满足:i+1<arr.l......
  • week3
    week31.yum私有仓库的实现及博客输出2.阅读《图解TCP/IP》一书,地址:https://leon-wtf.github.io/doc/%E5%9B%BE%E8%A7%A3TCPIP.pdf,有时间的可以写下读书笔记3.画图TCP......