LOO Rug Pull
What happened
LOO is a BEP20 token on BNB Smart Chain (contract 0xfDB0fE3d…5659ab) traded against USDT on PancakeSwap. The deployer-owner receives the whole 21,000,000,000 supply at deployment and keeps an owner-only blocklist (multipleBotlistAddress) that makes any transfer to or from a listed address revert, plus uncapped buy and sell fee setters and a settable fee-destination wallet. CertiK's Skynet alert of October 28, 2022 (23:32 UTC) reported an exit scam with slippage above 97%: the deployer sent more than 1B LOO to 0x36ec9..., which sold for a profit of roughly $269K.
De.Fi's REKT database lists the loss as $275,117 and says the deployer sent 1,050,000,000 LOO to an EOA that drained the liquidity, and that the proceeds were then moved to another EOA. The addresses it lists are 0xd9c37a0a…a43194 (the deployer), 0x36ec92f4…324d6a and 0xf88e124b…6c67b4, with token-transfer transaction 0xe5c67dff…b5aecd and stolen-funds transfer 0xed08f931…aeac5c. The sale needed no special backdoor: the deployer held the supply and the pair was a normal PancakeSwap pool.
How it happened
- At deployment
_mint(owner(), totalSupply)creates 21,000,000,000 LOO for the deployer,excludeFromFees(owner(), true)exempts the deployer from fees, and the constructor creates the LOO/USDT pair on the PancakeSwap router. - The owner can block addresses:
function multipleBotlistAddress(address[] calldata accounts, bool excluded) public onlyOwnerwrites_isBlacklisted, and_transferenforcesrequire(!_isBlacklisted[from] && !_isBlacklisted[to], 'Blacklisted address');. A listed holder cannot sell (the holder isfromwhen the router pulls tokens into the pair), and a listed pair would block all trading. No source shows this was used. - The owner can raise fees without limit:
setBuyTaxesandsetSelTaxestake unbounded values. On a sell,MFee = amount.mul(sellMarketingFee1).div(100)andDFee = amount.mul(sellDeadFee).div(100)are both debited from the seller, so a combined 100% leaves the seller nothing, and a higher total makesamount.sub(fees)revert.setDeadWalletalso lets the owner redirect theDFeeshare, labelled a burn, to any address, andsetMarketingWalletchanges where the swapped marketing share goes. Renouncing ownership would remove these powers, and the contract hasrenounceOwnership, but the on-chain owner read on 2026-09-30 was still the deployer. - What was reported: per CertiK, the deployer sent more than 1B LOO to an EOA beginning 0x36ec9..., which sold into the pool for about $269K and caused slippage above 97%. De.Fi lists the loss as $275,117 and the transfer of proceeds to another EOA.
- The code charges no fee on the first hop. A plain transfer between two non-contract addresses hits
if(!automatedMarketMakerPairs[to] && !automatedMarketMakerPairs[from] && !isContract(from) && !isContract(to)){and setsfees = 0, whether or not the sender is fee-exempt. Only the later sale into the pair falls under the sell branchif(automatedMarketMakerPairs[to]){, where the fee applies unless the seller is in_isExcludedFromFees. The source alone does not show whether the receiving EOA was fee-exempt or how the pool's liquidity was funded.
Protocol details
Evidence
- report CertiK Alert tweet on LOO, 28 Oct 2022 twitter.com
- transaction bscscan.com transaction 0xe5c6…aecd bscscan.com
- transaction bscscan.com transaction 0xed08…ac5c bscscan.com
- address LOOCOIN.sol verified source (BscScan, contract 0xfDB0fE3dD8F7e9A671f63b7e7db0935A955659ab) bscscan.com
- address bscscan.com address 0x36ec…4d6a bscscan.com
- address bscscan.com address 0xd9c3…3194 bscscan.com
- address bscscan.com address 0xf88e…67b4 bscscan.com
- analysis Sourcify repository entry for the same contract repo.sourcify.dev
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.