Console NFT 黑客任务6解密
这次的Console NFT黑客任务算是蛮有挑战的。解开最后的密语需要用到SQL Injection, web3, solidity, AES128/MD5 解密
这次任务的网址: https://console-nft.art/pro_6/
任务要解密4段密码,然后按照这个格式把最终的命令发给Console机器人:/hacker_riddle_part_6_key4-key2-key1-key3
SQL Injection进入管理页面
网页显示需要登录账号,查了一遍代码,没有藏在代码里面登录密码。那剩下可能就是需要用SQL Injection来破解了
账号和密码都输入 " or ""="
果然顺利进入管理页面
在管理页面的To Do List那里,给了找到每个key的提示
- Key1: 登陆你的账号的密码就是Key1
- Key2: 给Hacker转账,转账的Tx ID就是Key2
- Key3: 需要用到web3
- Key4: 登陆你的账号,破解key4
破解Key1
进入管理页面后,来到Gold Club Members的页面: https://console-nft.art/pro_6/dashboard/members.php
按F12,选择Network,然后输入你的id(user_xxxx discord ID最后4位)。点击Network页面的filter.php, 会看到你输入的id的密码(MD5加密的)
由于密码是经过MD5加密的,所有你需要通过https://www.md5online.org/md5-decrypt.html 进行解密
解密成功,获得我的key1: smokey, 也是我账号的登录密码
解密Key2
上面的解密获得了账号的登录密码,所以回到登陆页面,用上面破解的密码登录我的账号
登录成功:
登录成功后,到转账页面,要做的是给Hacker转账获得TX ID: https://console-nft.art/pro_6/dashboard/payment.php
发送成功后,到转账记录页面查找TX ID: https://console-nft.art/pro_6/dashboard/history.php
TX ID 就是我的Key2, 所有我的Key2是 g145S42N7x
解密Key3
到Key_3页面: https://console-nft.art/pro_6/dashboard/key_3.php
显示的是一个合约链接和一个ABI。很明显是让你调用这个合约的getThirdKey函数获得key3
为了方便,写了小工具调用合约查看Key3: https://replit.com/@ericet/Hacker6Key3#index.js
点击运行,然后输入你的4位discord ID,我的是8888,给的结果是adult,这就是我的key3
解密Key4
回到Dashboard页面: https://console-nft.art/pro_6/dashboard/index.php 拉到下面,会给你3串字符
把3段字符分别复制到这里进行解密:https://www.javainuse.com/aesgenerator
注:secret key那个最多支持16个字符,所以secret key是console_nft_encr
解密后获得key4: useful
最终命令
最终的命令的格式是: /hacker_riddle_part_6_key4-key2-key1-key3
结合上面解开的4个keys,我的最终命令是:
/hacker_riddle_part_6_useful-g145S42N7x-smokey-adult
发送命令给console bot就能获得500个Tokens
网站还有一个额外的密语,一登录就能看到的: /sqli_hacker
发送给console bot获得100个tokens
怎么获得最终命令的格式?
是不是好奇怎么获得最终命令的格式的? Dashboard页面底下有个“The Final Key", 里面是一个Solidity合约,但是合约里面有几个语法错误,修改一下部署合约就会获得我上面所说的格式: /hacker_riddle_part_6_key4-key2-key1-key3
如果你有兴趣自己部署合约来获得最终的key,你可以用下面我修改过的合约代码:
pragma solidity ^0.8.0; contract HackerRiddlePart6_Final_Key { function finalKey(string memory key_1, string memory key_2, string memory key_3, string memory key_4) public pure returns (string memory) { string[5] memory json; json[0] = string( abi.encodePacked('/hacker_riddle_part_6_') ); json[1] = string( abi.encodePacked(key_4, "-") ); json[2] = string( abi.encodePacked(key_2, "-") ); json[3] = string( abi.encodePacked(key_1, "-") ); json[4] = string( abi.encodePacked(key_3) ); string memory result = string( abi.encodePacked( json[0], json[1], json[2], json[3], json[4] ) ); return string(abi.encodePacked(result)); } }
喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!
- 来自作者
- 相关推荐