TWEETY-MEGA-FUMO Rug Pull
What happened
TWEETY, MEGA and FUMO were three Ethereum tokens whose Uniswap V2 liquidity was removed by the same address, 0x6007d8d7…531c2a, between 26 and 27 June 2023. TWEETY's verified code gives that owner a switch, changeAb, that turns every new buyer into a greylisted address: once it is on, anyone who receives TWEETY (other than the pool and whitelisted wallets) can move the tokens only within blockN blocks of first receiving them, one block by default, so later sells revert. The owner can also blacklist or whitelist any address, mint unlimited TWEETY, and has no function to transfer or renounce ownership.
The three removals took out 113.34 WETH from the TWEETY pool, 63.33 WETH from the MEGA pool and 43.89 WETH from the FUMO pool, about 220.57 WETH in total. De.Fi's REKT database puts the combined loss at $484,320 and says the funds stayed in the deployer's address as WETH.
How it happened
initTokencredits the whole supply totokenOwner, makes itowner, and records the Uniswap pair asLP; theOwnablecontract has notransferOwnershiporrenounceOwnership.- While
abis true, every transfer to a non-whitelisted address other thanLPmarks the recipient intokenGreylistand stores the block of first receipt indeath, so each buyer is greylisted when the pair sends them tokens. - A greylisted address passes the transfer checks only while
block.number < death[addr] + blockN; with the defaultblockN = 1a buyer cannot sell in any later block, because the router'stransferFromfrom that holder reverts. - The owner controls
abwithchangeAb, the window withchangeBn, and can also blacklist any address or mint any amount to any account. - The deployer drained all three pools through
removeLiquidityWithPermit: on 26 June 2023 at 09:15:59 UTC the MEGA/WETH liquidity (63.33 WETH) in transaction 0xe6103b10…546693, then on 27 June at 04:11:47 UTC the TWEETY/WETH liquidity (113.34 WETH and 33.28 billion TWEETY) in transaction 0x4f32ff59…41f093, and at 04:28:23 UTC the FUMO/WETH liquidity (43.89 WETH) in transaction 0xb068edba…90d6f3.
Protocol details
Evidence
- transaction Etherscan: TWEETY/WETH removeLiquidityWithPermit 0x4f32ff59... etherscan.io
- transaction Etherscan: MEGA/WETH removeLiquidityWithPermit 0xe6103b10... etherscan.io
- transaction Etherscan: FUMO/WETH removeLiquidityWithPermit 0xb068edba... etherscan.io
- address TWEETY (CoinToken) verified source code etherscan.io
- address etherscan.io address 0x6007…1c2a etherscan.io
- analysis Sourcify match for 0x6f5bafffc6bf7e17e9fdb2ddae79aee976ca0dd1 on Ethereum repo.sourcify.dev
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.