Skip to content

Instantly share code, notes, and snippets.

@MrFatoni
Created February 15, 2023 05:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save MrFatoni/e6014a0643c6c5632ef38057c5368756 to your computer and use it in GitHub Desktop.
Save MrFatoni/e6014a0643c6c5632ef38057c5368756 to your computer and use it in GitHub Desktop.

halo lagi, kyk kemarin alias acak-acakan, step dan pocong di bawah. bug ini (kyknya) price manipulation, reentrancy dan incorrect flaw/validation

Penjelasan: _transfer() bakal ngejalanin logic ketika kita transfer token.

  1. kalau kita ngirim token ke address sendiri dengan value 0 akan menjalankan function releasePush() tapi error “ga ada bonus buat lo” 🤔 (karena isi myPush / angka setan kosong)
  2. karena trigger releasePush() butuh angka setan maka kita dapatkan dengan transfer token ke LP, dan diulangi beberapa kali. angka setan bertambah dengan looping transfer ke LP & skim() berulang **
  3. sewaktu kita ngirim token ke address liquidpool/LP akan menjalankan kalkulasi bonus & angka setan
  4. releasePush() akan ngeburn token dari LP (sesuai angka setan?)
  5. swap and profit karena harga swap berubah setelah transfer ke address LP (token di LP berkurang karena burning)

source code token EVILBADEX

STEP:

  1. pertama kita harus punya WETH / bisa flashloan
  2. swap 0.12 ether ke token
  3. kirim token hasil beli ke address LP sebanyak 10x (angka setan nambah dan LP ngeburn token)
  4. panggil skim() untuk ngedapetin token yg dikirim ke LP sebanyak 10x
  5. lalu eksekusi releasePush() dengan kirim 0 token ke address sendiri, ngeburn angka setan?
  6. dan terakhir swap token ke WETH

POC:

https://gist.github.com/MrFatoni/da7a66e2a1f4e76b2db1aa643c35858f

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment