攻防世界-MISC-EASY_EVM

news/2024/5/19 21:05:06 标签: MISC, CTF, 攻防世界

题目链接:攻防世界 (xctf.org.cn)

下载附件得到info.txt:

pragma solidity ^0.5.0;

ABI:

[

    {

        "inputs": [],

        "payable": true,

        "stateMutability": "payable",

        "type": "constructor"

    },

    {

        "constant": true,

        "inputs": [

            {

                "internalType": "string",

                "name": "source",

                "type": "string"

            }

        ],

        "name": "Convert",

        "outputs": [

            {

                "internalType": "uint256",

                "name": "result",

                "type": "uint256"

            }

        ],

        "payable": false,

        "stateMutability": "pure",

        "type": "function"

    },

    {

        "constant": true,

        "inputs": [],

        "name": "GetFlag",

        "outputs": [

            {

                "internalType": "string",

                "name": "flag",

                "type": "string"

            }

        ],

        "payable": false,

        "stateMutability": "view",

        "type": "func tion"

    },

    {

        "constant": true,

        "inputs": [],

        "name": "Require",

        "outputs": [],

        "payable": false,

        "stateMutability": "view",

        "type": "function"

    }

]

Bytecode:

6080604052693100e35e552c1273c953600181905550691ac3243c9e81ba850045600281905550695ce6a91010e307946b8760038190555061030f806100466000396000f3fe608060405234801561001057600080fd5b24506004361060415760003560e01c80638906899514610046578063907e178b146100c9578063b357e2cd14610198575b600080fd5b61004e6101a2565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561008e578082015181840152602081019050610073565b50505050905090810190601f1680156100bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610182600480360360208110156100df57600080fd5b81019080803590602001906401000000008111156100fc57600080fd5b82018360208201111561010e57600080fd5b8035906020019184600183028401116401000000008311171561013057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506101ac565b6040518082815260200191505060405180910390f35b6101a06101cd565b005b6060600054905090565b600080602083015190506101008160001c816101c457fe5b04915050919050565b600061027260008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156102685780601f1061023d57610100808354040283529160200191610268565b820191906000526020600020905b81548152906001019060200180831161024b57829003601f168201915b50505050506101ac565b905069291012e74c77fb9b1133600154828161028a57fe5b061461029557600080fd5b690c9158ba60d3e58402f560025482816102ab57fe5b06146102b657600080fd5b69208474a0eb40ca8d322560035482816102cc57fe5b06146102d757600080fd5b5056fea265627a7a7231582076bf9599d7c1db3c967349730ba966ea19a3c19a82c194cf481bf5dd993fec0d64736f6c63430005110032

这是一个以太坊智能合约(EVM)虚拟机的 Bytecode,那么考察的就是EVM逆向。不会做,告辞。

查了一下WP,Bytecode 被修改过使其无法反编译,需要修复或者直接看opcode。WP给出的源码长这样:

pragma solidity ^0.5.0;

contract EASY_EVM_CRYPTO{

    // flag = "flag{An_E4sy_EVM_y0u_sO1ve_it!}"

    string private FLAG;

    uint private x;

    uint private y;

    uint private z;

    // flag = 0x666c61677b416e5f453473795f45564d5f7930755f734f3176655f6974217d

    constructor() public payable {

        x = 231412341286754812414291;

        y = 126381254785148123414597;

        z = 438712649816519864511367;

    }

    function GetFlag() public view returns (string memory flag) {

        assembly {

            flag := sload(0)

        }

    }

    function Convert(string memory source) public pure returns (uint result) {

        bytes32 tmp;

        assembly {

            tmp := mload(add(source, 32))

        }

        result = uint(tmp) / 0x100;

    }

    function Require() public view {

        uint tmp = Convert(FLAG);

        require(tmp%x == 193913535844325315514675);

        require(tmp%y == 59349569214207838388981);

        require(tmp%z == 153559101645126489682469);

    }

}

那么这实际上是一个求解同余方程组的数论问题。

试着把数论部分做一下,sage脚本:

from Crypto.Util.number import *

x = 231412341286754812414291
y = 126381254785148123414597
z = 438712649816519864511367

rx = 193913535844325315514675
ry = 59349569214207838388981
rz = 153559101645126489682469

m = crt([rx, ry, rz], [x, y, z])
while b'flag' not in long_to_bytes(m):
    m += x * y * z
print(long_to_bytes(m))

运行后得到flag:flag{An_E4sy_EVM_y0u_sO1ve_it!}


http://www.niftyadmin.cn/n/5416350.html

相关文章

【每日刷题】栈与队列-随想录4、7、8、LC155、单调栈-LC739、单调栈-LC84

1. 随想录-4.LC20有效的括号 题解很妙。遍历到 [ { ( 的时候往stack里加入对应的 ] } )元素。遍历到右边元素的时候,就看栈顶弹出的元素是否一致。这解决了判断括号是否匹配问题。 但同时要注意数量问题!!两种情况 左括号少,右…

差距拉开了!量化大厂最新业绩排行曝光!

经历了一月份的失落和二月份绝地反攻,量化大厂们的整体业绩备受关注。 而今年2月份的量化战绩,甚为关键! 毕竟市场指数“前低后高”,基金经理与投资人开年以来,共同经历了“惊心动魄”的考验。 量化大厂&#xff0c…

签约仪式如何策划和安排流程?如何邀约媒体现场见证报道

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 签约仪式的策划和安排流程,以及邀约媒体现场见证报道,都是确保活动成功和提升影响力的关键环节。以下是一些建议: 签约仪式的策划和安排流程 明确目标…

鸿蒙实战开发:【WLAN使用】

在eTS中WLAN的基本使用,包括禁用和启用WLAN、WLAN扫描和获取扫描结果、WLAN状态监听、WiFi连接状态监听、获取IP信息、获取国家码、判断设备是否支持WLAN相关特性。 样例展示 WLAN(仅对系统应用开放) 介绍 本示例通过[ohos.wifiManager] 相…

QWebEngineView添加chrome参数的方法

开启Chrome DevTools开发者工具 在chrome浏览器调试前端页面,请使用以下方法之一: 方法一:设置环境变量:QTWEBENGINE_REMOTE_DEBUGGING1112 方法二:添加启动参数:--remote-debugging-port1112 方法三&a…

BUUCTF-Misc3

LSB1 1.打开附件 得到一张图片,像是某个大学的校徽 2.Stegsolve工具 根据标题LSB,可能是LSB隐写 放到Stegsolve中,点Analyse在点Data Extract 数据提取 因为是LSB隐写,发现含以.png结尾的图片 3.保存图片 4.得到flag 扫描二维…

【kubernetes】关于k8s集群中的ingress规则案例

目录 一、k8s 对外服务之 Ingress 1.1什么是ingress 1.2外部的应用能够访问集群内的服务有哪些方案? 1.3Ingress 组成 1.4Ingress-Nginx 工作原理 1.5ingress 暴露服务的方式 二、实操ingress暴露服务 前期.部署 nginx-ingress-controller 2.1基于host网络…

Springboot+vue的养老院管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频: Springbootvue的养老院管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。 项目介绍: 本文设计了一个基于Springbootvue的养老院管理系统,采用M(model)V&…