查看原文
其他

我是怎么让V神给我转了一个NFT的?

    这是一篇sleep minting的骗术揭秘文章,请所有web3参与者务必全文认真阅读。


    现在已经有了很多追踪巨鲸交易的工具,巨鲸们的动作成为了很多人对于项目判断的风向标,就像是在赌场里你跟着庄家下注准没错,所以很多项目方会想尽办法让自己的NFT与这些巨鲸扯上点关系,目前常见的操作有2种:1


    1.直接空投给巨鲸

    2.直接用巨鲸钱包地址来mint,伪装成巨鲸mint了你的NFT


    这两种操作都不是本文要讲的骗术,因为它们这种操作已经比较低级很容易让小韭菜们看破。


    假设将第二种升级,V神mint了一个NFT,然后V神把这个NFT转移给了我,你会怎么想?


    本文将拆解第三种骗术的具体实现过程,注意本文的目的是让大家避免被骗,不是让大家学会这种骗术去骗别人,若产生了纠纷请自负。


    这种骗术是第二种的升级版,所以我们要先实现第二种的效果。

   

    首先我们看一下正常的mint函数是什么样的,只传入了一个参数numberOfTokens用来表示被mint的NFT编号,执行_safeMint,msg.sender则代表当前正在操作者的地址,比如是我在操作,于是就实现了“我的钱包地址mint了一个编号为3的NFT”。

    

    

    我们将这个函数修改一下,新加一个传入的参数mintAddress,并将msg.sender替换为mintAddress,则我可以指定将编号为3的NFTmint给某个人。

     


    然后我在地址中输入V神的地址,编号输入1,点击transact进行交易,

    


    交易完成后,我们可以看到这个NFT是从0x00地址到了V神的钱包,这意味着V神mint了我的NFT。

    


      也可以查询到V神确实拥有了这个NFT。

    


    到这里,第二种骗术已经实现了,这时候可能会有不明就里的人说“卧槽V神mint了一个NFT项目,赶快冲!”


    但这种骗术已经麻了,那更高级的是“卧槽V神mint了一个NFT项目,而且把它交易给了另外一个人,赶快冲!”


    所以我需要将V神的这个NFT从他的账户中转移到我的账户。


    所以我将from地址填为V神,to地址填为我,tokenid填为刚才mint的编号1,点击transact执行。


    

    在预料之中这个交易被拦截了,我如果能从V神的钱包中转移NFT,那我还在这写公众号干嘛呢早都游艇豪宅了。


    

    接下来需要做一些底层的事,将ERC721协议的合约代码进行修改,来开一个后门。


    我们来到openzeppelin,这是一个官方封装好的协议库,进入Ownable.sol中。

    


    在里面增加一个秘密持有人_secretOwner,并把我自己的地址写进去。


    接下来要将我的地址赋予最高权限,我们可以看到onlyOwner修饰符中的校验逻辑是当前操作人是否为owner,如果不是则会被拦截。



    我们将其修改为新增一个或逻辑,校验当前操作人是否是我自己,如果是的话则予以通过,它的性质就像是我是一栋楼的楼管,你们每个人都有自己的钥匙可以打开自己的房子,但是我有一把万能钥匙,可以打开你们所有人的房子。

    


    然后我们进到ERC721.sol协议合约中,还是先定义全局变量 _secretOwner为我的地址。



    再修改approve函数,其表示是否将资产的操作权限授权给某个人,可以看到这里有两层校验:

    1.交易发起者是否为owner本身

    2.调用isApprovedForAll校验onwer是否给发起者授权


    

    我新增一个校验逻辑:交易发起者是否为_secretOwner我自己。



    _isApprovedOrOwner是用来校验是否授权或者为tokenowner,在这里也是将我自己加进去。

       

    

    接下来我们再回到一开始的操作,from输入V神地址,to输入我自己的地址,tokenid为存放在V神的NFT,点击transact交易。



    可以看到钱包正常的被调起,并提示我将转移一个doodlesNFT和gas费,继续下一步确认。



    交易成功!    



    交易记录显示这个NFT是由V神转移给我的!   



    经历这么一通操作,我成功的实现了“一个项目方发行了NFT,然后V神去mint了一个,还将其转移给了我”,大家可以想象一下,我如果拿着这个NFT去招摇撞骗,不知道会有多少人上当。


    不可能让所有NFT交易者都具备这样熟练的代码阅读能力,在购买NFT项目时认真审阅合约代码是否有后门,这也就是去中心化的另一面,在无监管的状态下,底层代码和上层交易都是自由开放状态,利用技术来注入恶意代码从而即使产生了欺诈,也只能吃哑巴亏无法追回。


    技术不好的如之前文章提到的阿狸NFT到底做错了什么?坑的是自己,但是技术好的则在某种程度上是掌握了规则操控能力的,在整个开放的web3世界中可以犹如开了外挂般以上帝之手操纵这个世界运转的规则。


    最近比较忙更新的频率降低了,接下来我可能会花更多精力专注在智能合约安全性方向,或者其他的大家感兴趣的方向,如果大家现在对于web3有疑惑的、黑盒的区域,也请留言给我,或者添加我的微信 cj350306878,请备注姓名 公司和职位,谢谢。


    


    

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存