DEV Community

晓道
晓道

Posted on

尝试爆破NFT奖励时间限制 (一)

开始

发几天文章,网站上突然有人找我,问题如下:
你好,我有几个账户有领取某个nft的权限,但是网站活动结束了,我可以求助你写一个claim函数直接从智能合约领取吗? | 登链社区
本着助人为乐,不让人失望的原则,做了一些尝试,做下记录。

这个朋友是看了我在没有abi文件的情况下调用智能合约方法,web3py实现
这篇的情况下,觉得通过调用他的智能合约,就可以领取活动奖励。

情况分析

根据他提供的网页,了解情况,网页差异:
Shadowy Super Coder Pack by Galaxy Space | Project Galaxy
已经结束的:
16440482411.png
没有结束的:
image.png

通过对网站的观察,发现网站是vue写的,
16440484391.png

观察网站流程,用正常的操作一次,发现调用的函数:
16440485421.png

点日志就可以看到调用的函数。

另外还观察了ethscan
Ethereum Transaction Hash (Txhash) Details | Etherscan
16440488061.png
参数挺多,不是那么好搞。

确定方案

初步确定从网页入手,网页连接显示,活动结束,没有按钮点,没有按钮不说明,不能调用函数发起请求嘛。
网站的的vue sourcemap还是完整,没有这个要麻烦很多。
确定要入手的函数,点击浏览器 console信息,跳转源码:
16440490231.png
确定,这个网站就是靠调用这个函数领奖励的。
所以想办法,在那个活动结束的网页,能调用这个函数就可以(如果他没做防护的话,找我这个朋友给我说,别人一直都在领到)

大家都知道,vue的网站,网页里的函数,是不能直接调用的。
虽然有办法使用,document.querySelector('button')获取按钮,再通过按钮发起点击事件,但是这个网页,claim这个按钮都没有。
使用得用其他方式
大家都知道,写js,js函数的this,进入了类的函数,你就能使用this,在网页发起有this调用的时候,你断住,这个时候console是可以使用this的,有了this,你就可以使用一切的vue种的函数,资源,所以这就是关键。
再次观察网页。CampaignTemplate.vue网页就是重点。
确定两个断点:

16440498551.png
回到刚才那个结束的页面,断点打好,重新刷新,见证奇迹吧!
输入this.claimDrop()

16440500791.png

效果怎么样

浏览器点继续,领取claim就开始了。
很遗憾没有成功。

16440503001.png

16440503561.png
流程开始了,但是没有成功,发起了一个这样的Gql请求,截图是回复内容。

他的网页还是有防护的,不是不能点按钮发请求就可以,服务器对请求是有验证的。

关于网页爆破的内容,到此为止。
后面还有一系列的办法,涉及到claim函数爆破,下一篇再写。
尝试爆破NFT奖励时间限制 (二) | 登链社区 | 深入浅出区块链技术 (learnblockchain.cn)

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read more

Top comments (0)

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more