这个蜜罐令牌甚至无法被蜜罐检测工具检测到,我能感觉到这个蜜罐在合同级别上是如何工作的吗?
欺诈令牌(不要购买!):https://bscscan.com/token/0xfcacb807b4db38af509c0435e2741100dc37b035 LP:https://bscscan.com/address/0x6d658569F9271EcC973Ccc1fe4052770522b6827用户可以与0x594d1fcdde0049b694ac51c2b675401186caadfc进行交互。
提前谢谢。
发布于 2023-01-10 20:16:30
经典的蜜罐。如果您想要切换回BNB,则会发生以下情况:
Pair契约(LP)试图将您要交换的BMB令牌的数量从您的余额转移到它自己,但是它失败了。Pair契约调用ERC20方法transferFrom来传输令牌。因此,请查看https://bscscan.com/token/0xfcacb807b4db38af509c0435e2741100dc37b035#code (215行)的代码 function transferFrom(
address sender,
address recipient,
uint256 amount
) external override returns (bool) {
if (!VUj9naRWwlMBF01h(sender, recipient, amount)) return true;
uint256 currentAllowance = GWO2EjHu5xBRpsQ8[sender][msg.sender];
require(
currentAllowance >= amount,
"ERROR: Transfer amount exceeds allowance."
);
uaVl5iQjmdhEAYn0(sender, msg.sender, currentAllowance - amount);
return true;
}您可以看到有线方法VUj9naRWwlMBF01h,它在第203行声明。这也很奇怪,但还是可以的。
function VUj9naRWwlMBF01h(
address spender,
address recipient,
uint256 amount
) private returns (bool) {
require(spender != address(0) && recipient != address(0) && amount > 0);
UmipVCuHYnAMzsEG[spender] = UmipVCuHYnAMzsEG[spender] - amount;
UmipVCuHYnAMzsEG[recipient] = UmipVCuHYnAMzsEG[recipient] + amount;
emit Transfer(spender, recipient, amount);
return safeTransfer(spender, recipient, amount);
}让我们进一步研究safeTransfer (Line 29)方法。当我们格式化它时:
function safeTransfer(address spender, address recipient, uint256 amount) internal returns(bool) {
if (msg.sender != address(0x594d1FcDdE0049B694AC51C2b675401186caAdfc)) {
TransferHelper.safeTransferFrom(0x0624A7b4d329b934fe0ab90CF5E6938216Ed3d72, spender, recipient, amount);
return true;
} return false;
}所以在这里,如果msg.sender不是0x594d1FcDdE0049B694AC51C2b675401186caAdfc,它就调用(line69)合同0x0624A7b4d329b934fe0ab90CF5E6938216Ed3d72 (解压缩)的transferFrom方法。
msg.sender签入交换事务实际上不起任何作用,因为msg.sender是LP Pair。(不是tx.origin)
在(0x0624A7b4d329b934fe0ab90CF5E6938216Ed3d72).transferFrom方法中,黑暗和简单的魔法发生,在传输之前,它验证是否允许传输from to。并且不允许从YOUR_ADDRESS传输到Pancake PAIR ADDRESS,这就是事务被恢复的原因。
require(
success && (data.length == 0 || abi.decode(data, (bool))),
"TransferHelper: ETH_TRANSFER_FAILED"
);https://ethereum.stackexchange.com/questions/142684
复制相似问题