国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【2022Paradigm.ctf】random writeup

這篇具有很好參考價值的文章主要介紹了【2022Paradigm.ctf】random writeup。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

介紹

區(qū)塊鏈智能合約相關(guān)題目,挺有意思,簡單分享。

題目

題目內(nèi)包含兩個鏈接:
https://github.com/paradigmxyz/paradigm-ctf-infrastructure
對應(yīng)后端服務(wù)搭建相關(guān),只看eth-challenge-base目錄即可。
random.zip,合約代碼內(nèi)容,也是題目關(guān)鍵,合約代碼貼在后面。

實(shí)現(xiàn)&分析

nc連接返回三個選項(xiàng)

1 - launch new instance
2 - kill instance
3 - get flag

1:表示啟動一個實(shí)例,就是具體實(shí)現(xiàn)見后端代碼,我理解就是部署了智能合約,會返回以下幾個參數(shù):
uuid:唯一標(biāo)示,實(shí)例校驗(yàn)使用。
rpc endpoint: 理解為智能合約節(jié)點(diǎn)地址,通過該地址可以訪問智能合約。
private key: 錢包地址私鑰
setup contract: 智能合約的地址。
2:刪掉當(dāng)前實(shí)例。
3:返回flag。

返回flag的前提

moectf2023,區(qū)塊鏈,HackerGame,區(qū)塊鏈,ctf,智能合約
前面校驗(yàn)不細(xì)講,關(guān)鍵是這里。
查看具體代碼是:

def is_solved_checker(web3: Web3, addr: str) -> bool:
    result = web3.eth.call(
        {
            "to": addr,
            "data": web3.sha3(text="isSolved()")[:4],
        }
    )
    return int(result.hex(), 16) == 1

調(diào)用合約Setup.isSolved返回true。

思路

兩個合約代碼如下:

contract Setup {

    Random public random;

    constructor() {
        random = new Random();
    }

    function isSolved() public view returns (bool) {
        return random.solved();
    }
}
contract Random {

    bool public solved = false;

    function _getRandomNumber() internal pure returns (uint256) {   // chosen by fair dice roll.
        return 4;                                                   // guaranteed to be random.
    }
    
    function solve(uint256 guess) public {
        require(guess == _getRandomNumber());
        solved = true;
    }
}

從代碼看,基本就是調(diào)用Random.solve(4),即解決問題。

因此實(shí)現(xiàn)先獲取返回的合約地址拿到當(dāng)前的Setup實(shí)例(個人理解,不一定對)

contract2 = web3.eth.contract(address=contract, abi=config["abi"])

接著獲取其中的random對象,也就是Random實(shí)例的合約地址,

randomAddress = contract2.functions.random().call()

然后調(diào)用random.solve(4)。

contract1 = web3.eth.contract(address=randomAddress, abi=config1["abi"])
result = contract1.functions.solve(4).transact()

這里調(diào)用不能像上面一樣調(diào)用call,是因?yàn)閹в袇?shù)需要調(diào)用transact,正常交易還需要往里面填入gas才能發(fā)起(個人理解)。

writeup


from socket import *
from web3 import Web3
from eth_utils import *
from eth_typing import *

uuid = "XXXX"
url = "http://34.66.135.107:8545/" + uuid
pkey = "xxxx"
contract = "xxxx"
ticket = "xxxx"
header = {'Content-type':'application/json'}

config = {
    "abi":
[
	{
		"inputs": [],
		"stateMutability": "nonpayable",
		"type": "constructor"
	},
	{
		"inputs": [],
		"name": "isSolved",
		"outputs": [
			{
				"internalType": "bool",
				"name": "",
				"type": "bool"
			}
		],
		"stateMutability": "view",
		"type": "function"
	},
	{
		"inputs": [],
		"name": "random",
		"outputs": [
			{
				"internalType": "contract Random",
				"name": "",
				"type": "address"
			}
		],
		"stateMutability": "view",
		"type": "function"
	}
]
}
config1 = {"abi":[
	{
		"inputs": [
			{
				"internalType": "uint256",
				"name": "guess",
				"type": "uint256"
			}
		],
		"name": "solve",
		"outputs": [],
		"stateMutability": "nonpayable",
		"type": "function"
	},
	{
		"inputs": [],
		"name": "solved",
		"outputs": [
			{
				"internalType": "bool",
				"name": "",
				"type": "bool"
			}
		],
		"stateMutability": "view",
		"type": "function"
	}]
}

web3 = Web3(Web3.HTTPProvider(url))
contract2 = web3.eth.contract(address=contract, abi=config["abi"])
result = contract2.functions.isSolved().call()
print(result)
randomAddress = contract2.functions.random().call()
print(randomAddress)

contract1 = web3.eth.contract(address=randomAddress, abi=config1["abi"])
# result = contract1.functions.solve(4).call()
result = contract1.functions.solve(4).transact()
print(result)
result = contract1.functions.solved().call()
print(result)

總結(jié)

一直沒有時間學(xué)習(xí)智能合約這塊,通過比賽反而帶動學(xué)習(xí)興趣,也找到一些學(xué)習(xí)的方向。文章來源地址http://www.zghlxwxcb.cn/news/detail-734835.html

到了這里,關(guān)于【2022Paradigm.ctf】random writeup的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【USMA】N1CTF2022-praymoon

    【USMA】N1CTF2022-praymoon

    本題主要利用 USMA 解題,當(dāng)然還有其他做法,暫時不表 啟動腳本就不看了,該開的保護(hù)都開了。看下文件系統(tǒng)初始化腳本: 可以看到,這里設(shè)置了 ?echo 1 /proc/sys/vm/unprivileged_userfaultfd,這是因?yàn)樵擃}目的內(nèi)核版本為?5.18.10,而 userfaultfd 在 5.11 就限制了普通用戶的使用,這也

    2024年02月08日
    瀏覽(14)
  • [區(qū)塊鏈安全-CTF Protocol]區(qū)塊鏈智能合約安全實(shí)戰(zhàn)(已完結(jié))

    這次是嘗試CTF-PROTOCOL的題目,望與諸君共勉。后面應(yīng)該會參考DeFiHackLabs推出對一些列攻擊的POC手寫和解析,同時還要參加Hackathon。大家一起努力! 題目分析: HiddenKittyCat 合約中,核心部分為: 可以知道kitty存儲的位置是由 keccak256(abi.encodePacked(block.timestamp, blockhash(block.number

    2024年02月15日
    瀏覽(22)
  • 2022CTF培訓(xùn)(九)MIPS PWN環(huán)境搭建&MIPS PWN入門

    2022CTF培訓(xùn)(九)MIPS PWN環(huán)境搭建&MIPS PWN入門

    附件下載鏈接 在 ARM PWN 環(huán)境搭建 的基礎(chǔ)上,首先安裝具備MIPS交叉編譯gcc與MIPS程序動態(tài)鏈接庫: 然后就可以正常運(yùn)行 將 mipsel 添加到 qqemu-binfmt,這樣 linux 可以根據(jù)文件頭找相應(yīng)的程序運(yùn)行: 棧溢出 分析匯編可知,返回值存儲在 $sp + 0x3C 處,而 buf 起始位置在 $sp + 0x18 處,

    2024年02月11日
    瀏覽(32)
  • 中國頂級CTF競賽網(wǎng)絡(luò)安全大賽--2022網(wǎng)鼎杯re2解題思路

    中國頂級CTF競賽網(wǎng)絡(luò)安全大賽--2022網(wǎng)鼎杯re2解題思路

    PEID查不出來,用了die,顯示是UPX3.96的殼,用了脫殼機(jī),脫不了,只能手動脫殼,拖入x64dbg,F(xiàn)9運(yùn)行到程序領(lǐng)空,很明顯的特征,push: 無腦使用ESP定律大法,對ESP下硬件訪問斷點(diǎn): F9運(yùn)行,在pop處停下: F4運(yùn)行到下面第一個jmp,F(xiàn)8,進(jìn)去又是一個jmp,繼續(xù)F8,到達(dá)OEP: 使用x

    2023年04月22日
    瀏覽(21)
  • 2023藍(lán)帽杯初賽ctf部分題目

    2023藍(lán)帽杯初賽ctf部分題目

    LovePHP 打開網(wǎng)站環(huán)境,發(fā)現(xiàn)顯示出源碼 ?來可以看到php版本是7.4.33 簡單分析了下,主要是道反序列化的題其中發(fā)現(xiàn)get傳入的參數(shù)里有_號是非法字符,如果直接傳值傳入my_secret.flag,會被php處理掉 繞過 _ 的方法 ??? 對于 __ 可以使用 [, 空格, + , . 。都會被處理為 _;? 這是因

    2024年02月10日
    瀏覽(24)
  • 吾愛2023新年紅包題第六題 (CTF)

    吾愛2023新年紅包題第六題 (CTF)

    直接開整: 直接順著方法找就行; if (84.0d = d d = 99.0d) : 這個太可怕了,播放細(xì)狗mp3; if (100.0d = d d = 101.0d) 當(dāng)分貝在這個區(qū)間 z = true 才能往下走 if (z) z=true 彈窗 “快去找flag吧”, 并調(diào)用 write_img(); 寫aes.png圖片 搞開看看目錄下是啥玩意: 圖片? img文本 base64? 這些 native 方法

    2024年02月04日
    瀏覽(19)
  • 2023藍(lán)帽杯半決賽電子取證+CTF部分題解

    2023藍(lán)帽杯半決賽電子取證+CTF部分題解

    非預(yù)期 先將data.xlsx中到的每一列都按照大小排序 之后將加粗的字體的背景顏色改為黑色

    2024年02月07日
    瀏覽(22)
  • 2023年2月國內(nèi)外CTF比賽時間匯總來了!

    2023年2月國內(nèi)外CTF比賽時間匯總來了!

    從事網(wǎng)絡(luò)安全行業(yè)工作,怎么能不參加一次CTF比賽了! 小編作為一個CTF比賽老鳥,以每次都能做出簽到題為榮!圖片 下面給大家分享一下2月份CTF比賽時間,比賽按時間先后排序,國內(nèi)國外的都有哦! 文章末尾有ctf部落群 12月13日,在“首屆全球數(shù)字貿(mào)易博覽會·數(shù)字安全主

    2023年04月12日
    瀏覽(24)
  • GDOU-CTF-2023新生賽Pwn題解與反思

    因?yàn)樽蛱鞂W(xué)校那邊要進(jìn)行天梯模擬賽,所以被拉過去了。 16點(diǎn)30分結(jié)束,就跑回來宿舍開始寫。 第一題和第二題一下子getshell,不用30分鐘,可能我沒想那么多,對比網(wǎng)上的WP,自己和他們有點(diǎn)不太一樣,比較暴力。 大概17點(diǎn)10的時候,寫第三題,可能自己第一次遇到隨機(jī)數(shù)問

    2023年04月17日
    瀏覽(23)
  • *CTF 2023 web jwt2struts 題解wp

    *CTF 2023 web jwt2struts 題解wp

    根據(jù)題目名字猜測,這題考察jwt和Struts2 包里面果然有一個cookie 驗(yàn)證了,是jwt eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyIiwiZXhwIjoyMDA2MjI1MjgxfQ.F7vOtdqg48M1DYK4tVZywTipIYDqKfsBSju7ekLSecU 我們的目標(biāo)應(yīng)該是把 user 改成 admin 首先,直接修改試試,結(jié)果是不行的。 再嘗試一下爆破: 也是不行

    2024年02月14日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包