人工审核换币导致安全问题

区块链安全 2年前 (2021) admin
532 0 0


最近一直关注一个币 $INXT , 他们将代币合约升级了。


0xd09fa188c6f2a3b0ea6c3533e8c54d539c097337


pragma solidity ^0.8.3;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract INXTswap { IERC20 public INXT; address public ownerOfNewTokens; IERC20 public INXTO;
constructor( address _INXT, address _ownerOfNewTokens, ) { INXT = IERC20(_INXT); ownerOfNewTokens = _ownerOfNewTokens; INXTO = IERC20(_INXTO); }
function swap(uint256 _amount) public { require( INXT.allowance(ownerOfNewTokens, address(this)) >= _amount, "INXT token allowance too low (swap is completed)." ); require( INXTO.allowance(msg.sender, address(this)) >= _amount, "INTXO token allowance too low." );
_safeTransferFrom(INXT, ownerOfNewTokens, msg.sender, _amount); _safeTransferFrom(INXTO, msg.sender, address(this), _amount); }
function _safeTransferFrom( IERC20 token, address sender, address recipient, uint amount) private { bool sent = token.transferFrom(sender, recipient, amount); require(sent, "Token transfer failed"); }}


换币合约没有任何问题,扣除了用户的钱,然后从新合约转账过去,也没有办法重写定义的代币地址,妥妥的没有漏洞啊。


但是仔细观察发现并不是所有人都调用了swap方法,也有人直接转账了,那该怎么办呢?


https://etherscan.io/address/0xd09fa188c6f2a3b0ea6c3533e8c54d539c097337


您的旧 INXT 发送到我们的掉期合约地址 0xD09fA188c6F2a3b0eA6C3533E8C54d539c097337 并通过 hello@internxt.com 发送电子邮件给我们,并附上交易 ID。您将在 24 小时内收到相同数量的更新的 Internxt 代币


居然人工审核?那有可能有几种情况


  1. 脚本自动处理邮件

  2. 人工审核


对于这两种情况,都有可能存在以下问题


  1. 没判断交易的状态

  2. 没判断交易的合约地址是否正确


因此我们可以部署一个假合约来钓鱼试试,直接部署一个同名合约 


https://etherscan.io/token/0x406c220ceb3e05dfb3c0532588a41e809dbf4e8a


人工审核换币导致安全问题



钓鱼成功,收到官方打的币,刷了2w多U,然后主动退款了(虽然用的钱从tornado出来的,但是有一些关联),项目方表示以后会严格核对合约地址。最后和他们CEO聊人生理想,成为好朋友。


投资建议:


1. INXT能不能买?

从200万U涨到现在2000WU的市值,已经十倍了,就不推荐买了,不过存在上大交易所的预期,如果上了还是可以看到50U的。

2. 项目方怎么样?

项目方不懂区块链,就只是做一个网盘,纯粹的ICO。CEO也不懂区块链,这种项目风险很大,并且他们在换合约的时候把以前已经销毁的代币重新启用了。








原文始发于微信公众号(弦断谁听):人工审核换币导致安全问题

版权声明:admin 发表于 2021年12月20日 下午12:43。
转载请注明:人工审核换币导致安全问题 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...