4

一个蜜罐合约的解析

 2 years ago
source link: https://learnblockchain.cn/article/3509
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

一个蜜罐合约的解析 | 登链社区 | 深入浅出区块链技术

一个蜜罐合约的解析

一个蜜罐合约的解析

合约地址在:
etherscan

网上的讨论地址
reddit
源码如下:

contract defi_game {
    function Try(string memory _response) public payable {
        if (
            answerHash == keccak256(abi.encode(_response)) &&
            msg.value > 1 ether
        ) {
            payable(msg.sender).transfer(address(this).balance);
        }
    }

    string public question;

    bytes32 answerHash;

    mapping(bytes32 => bool) admin;

    function Start(string calldata _question, string calldata _response)
        public
        payable
        isAdmin
    {
        if (answerHash == 0x0) {
            answerHash = keccak256(abi.encode(_response));
            question = _question;
        }
    }
    function New(string calldata _question, bytes32 _answerHash) public payable isAdmin {
        question = _question;
        answerHash = _answerHash;
    }
    function Stop() public payable isAdmin {
        payable(msg.sender).transfer(address(this).balance);
    }

    constructor(bytes32[] memory admins) {
        for (uint256 i = 0; i < admins.length; i++) {
            admin[admins[i]] = true;
        }
    }

    modifier isAdmin() {
        require(admin[keccak256(abi.encodePacked(msg.sender))]);
        _;
    }

    fallback() external {}
}

分别是部署合约(constructor),开始游戏(Start),尝试(Try),停止游戏(Stop)
从代码来看,整个代码就是,猜谜游戏,start出题、设置答案,Try解题,对了就转账给对的人。
从交易记录来看,出题人,一下转了2个eth进去,Try需要至少1个eth才能进行。
结果就是合约部署人,在constructor的时候把自己账号的
keccak256(abi.encodePacked(msg.sender)给设置进去

for (uint256 i = 0; i < admins.length; i++) {
            admin[admins[i]] = true;
        }

Start的时候设置问题,

answerHash = keccak256(abi.encode(_response));
question = _question;

这个地方question是一个public变量,所以你能在链上面看到问题,通过Start的参数,你可以看到答案,但是这不是真的答案,
try一下你就知道,try一下就至少一个ETH

本地源码部署,测试

我把合约本地部署了一下,调用参数一样,Try可以成功,套路挺深的。
所以那个源码可能不是真的源码。
反汇编代码还是挺累,所以这个坑,后面有时间再填。
如果自己要部署合约,先这样:

function getadmin() public {
    address addr = address(0x9BEF5148fD530244a14830f4984f2B76BCa0dC58);
    bytes32 kca = keccak256(abi.encodePacked(addr));
    emit log_bytes32(kca);//0x8d3dfe9abb5f4b094c84ab5dc2fa239c318e4985fd30286fff6150ea6963222f
}

await defi_game.deploy(["0x0000000000000000000000000000000000000000000000000000000000000020", "0x0000000000000000000000000000000000000000000000000000000000000002",
"0x8d3dfe9abb5f4b094c84ab5dc2fa239c318e4985fd30286fff6150ea6963222f"])

0x9BEF5148fD530244a14830f4984f2B76BCa0dC58 是 Ganache的默认账号。

只是技术探讨,大家可以交流一下。

后面又反汇编了一下代码,发现代码确实是这个。

经过群友Miller的提醒,感谢Miller,ethscan上面合约调用合约显示是有问题的
这个里可以明确看到,New调用

另一个区块链浏览器
16438669931.png
这样就完整了,我一直当ethscan是什么都能看到的,疑惑了几天,看来分析问题得多看几个区块链浏览器。

所以流程如下:

1,部署合约,
2,调用New设置答案hash
3,开始Start,投入2个eth
4,有人Try,投入至少1个eth
5,Stop 收入,转回自己的钱包。

本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

  • 发表于 4天前
  • 阅读 ( 314 )
  • 学分 ( 20 )
  • 分类:Solidity

Recommend

  • 66

    访问的文章审核中... - FreeBuf网络安全行业门户 user 形状结合 怀...

  • 47
    • 微信 mp.weixin.qq.com 6 years ago
    • Cache

    以太坊蜜罐智能合约分析

  • 39

    *本文作者:枫夜丶,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。 这几年随着威胁情报的成熟,蜜罐技术被关注的越来越多,也渐形成低交互、中交互、高交互等交互程度的各类蜜罐,从web业务蜜罐、ssh应用蜜罐、网络...

  • 56
    • zhuanlan.51cto.com 5 years ago
    • Cache

    金融行业微蜜罐系统应用思考

    蜜罐技术本质上是一种对攻击方进行欺骗的技术,通过布置一些作为诱饵的主机、网络服务或者信息,诱使攻击方对它们实施攻击,从而可以对攻击行为进行捕获和分析,了解攻击方所使用的工具与方法,推测攻击意图和动机,能够让防御方清晰地了...

  • 67
    • www.freebuf.com 5 years ago
    • Cache

    T-Pot多蜜罐平台使用心法

    *本文作者:R00to1,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。 介绍 最近看到大佬发了几篇tpot蜜罐的文章,都是介绍安装的,那我就来写个看看怎么使用的文章,抛砖引玉,共同进步。我的蜜罐也是从16...

  • 55
    • www.freebuf.com 5 years ago
    • Cache

    从零编写一个自己的蜜罐系统

    *本文作者:lonely_wind,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。 一、前言 随着新型的APT攻击的出现,很多企业意识到传统安全技术手段已经无法满足对内部威胁的及时发现,而蜜罐由于其天然的特性–因为蜜罐...

  • 34
    • www.freebuf.com 5 years ago
    • Cache

    个人蜜罐Cowrie的运营分析

    *本文作者:si1ence,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。 0×0 背景 前段时间自己买了台VPS学习一下如何使用liunx顺便部署了一个Cowrie蜜罐系统准备收集点弱密码和一些病毒文件分析一下,最近...

  • 63
    • 微信 mp.weixin.qq.com 5 years ago
    • Cache

    网络蜜罐的前世今生

  • 27

    一、起因 随着今年某大型实战攻防演习活动的结束,不仅攻击侧展现了各式各样的武器弹药,防守侧的防护方案和策略也让...

  • 35

    在以太坊网络有这样一批人,通过更高的 gas 价格来抢走交易收益。 在这篇文章中,我将向你展示如何检测以太坊的抢跑者。为此,我开发了特殊的“蜜罐(honey pot)”合约,该合约允许任何人以足够快的速度提取一些以太币。我...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK