Writeups SQLi CTFSme

Writeups SQLi CTFSme – Halo semuanya, sepertinya sudah lama mimin tak posting. Kali ini mimin ingin sharing lagi terkait Keamanan jaringan yaitu tentang Capture The Flag atau CTF, tapi kali ini kita akan membahas penyelesaian soal-soal yang terdapat pada web ctfs.me

Untuk mengetahui apa itu CTF  bisa dilihat melalui https://yohan.es/ctf/

Daripada kelamaan basa basi, langsung saja kita bahas 🙂

Sebelumnya, bagi yang belum tau soalnya secara lengkap bisa dilihat melalui http://35.184.20.243:8003/, jika sudah mari kita lanjutkan.

SQLi Level 1 

Terdapat query

Solusi ? Kita tinggal masukkan payload

pada form session_id, maka langsung dapat flagnya

CTFS{disamarkan}

SQLi Level 2

Perhatikan source codenya

Kita lihat query pertama yang diberi komentar sepertinya sangat menarique dan sangat jelas itulah lokasi flagnya :v
Solusi ? Kita pakai UNION Operator untuk dapat mengakses flagnya

Kemudian violaaa dapet flagnya 🙂

Welcome
CTFS{disamarkan}! Here’s some green text for you.
CTFS{disamarkan2}

SQLi Level 3
Perhatikan source code berikut

Wah ada filternya, hemm kerad juga kamu ya

ehem, balik ke topik awal. Sepertinya yang difilter hanya union dan select
lagipula proses filter hanya menggunakan preg_replace sehingga kita bisa akali dengan cara mengganti union dengan UNIunionON dan select dengan SELselectECT

Kemudian, lihat querynya

Query seperti ini bisa langsung kita hajar dengan menggunakan UNION operator, oke langsung saja ikuzo minna !!!

wah dan ternyata nongol angka 1, 2, dan 3 pada hasil pencarian, artinya terdapat 3 kolom.
lansung hajaaar !!! IKUZOOOO !!!

Violaa dapat flagnya yay

CTFS{disamarkan}

SQLi Level 4
Perhatikan source code berikut

Waw filter lagi afuuu, tapi sepertinya ez karena menggunakan strpos dan hanya mengecek string yg semua kapital atau semua non kapital. Akan tetapi kita bisa akali dengan mengubah salah satu karakter saja menjadi kapital agar tidak terkena filter yang menyebalkan, lagipula sama seperti diatas juga querynya. Langsung saja hajar IKUZOOO !!!

Nais, dapat flag lagi

CTFS{disamarkan}

SQLi Level 5
Masih sama seperti diatas, tapi kita perhatikan lagi source codenya

NANI !!!? FILTER LAGI ??? Afuuuu
Tapi sepertinya msh mudah, karena cuma filter spasi saja :v
Tenang, bisa diakali menggunakan /**/

Oke, langsung kita hajar ikuzoo !!!

Hore dapet flag

CTFS{disamarkan}

SQLi Level 6
Yak, masih dunia SQLi
Kita perhatikan lagi source codenya

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA FILTER LAGIIIIIIII 🙁
Mana yang difiler itu tanda petik pula, oke kali ini lumayan kerad yah kamu

Loh, kalau tanda petik bagaimana cara kita membypassnya ?
Mudah, cukup menggunakan backslash \
Ayo saatnya kita sleding kids !!!

Akhirnya dapet flag yay

CTFS{disamarkan}

SQLi Level 8
Ano . . sepertinya kita ke level 8 dlu yah untuk nyari flag level 7 wkakak
Kali ini kita tidak diberikan source, namun ada hint yg menarik

Ini dia bagian yang paling menarik, let’s pop a shell :v
Kita perhatikan source html nya

Waduu ada folder uploads dan phpinfo nya 🙂
Berarti sudah jelas klo kita harus meng-upload shell kita pada folder uploads, untuk itu kita perlu melihat phpinfo nya

Bagian yang paling penting ialah DOCUMENT_ROOT, karena rootnya berada di /var/www/html maka kita perlu menguploadnya di /var/www/html/uploads

Bagaimana cara menguploadnya ? kita akan memanfaatkan fungsi dari MySQL yang bernama INTO OUTFILE

Kemudian kita akses http://35.184.20.243:8003/uploads/sayahekel.php?cmd=id melalui browser, dan akan muncul seperti ini

Artinya shell yang kita tanam berhasil kita akses, setelah ini kita langsung aja cari flagnya

Nais, kiita dapat flag horeee

CTFS{disamarkan}

SQLi Level 7
Oke, baru kali ini kita akan cari flag level 7
Hint sudah jelas, suruh cek /etc/passwd
Sebenernya kalau kita menggunakan SQL Injection, kita bisa menggunakan fungsi load_file, namun entah knp /etc/passwd nya gk bsa dibuka, terpaksa kita gunakan shell dari level 8

Sehingga, dengan menggunakan shell yang sudah kita tanam, mari kita akses /etc/passwd nya 😀

Yes flag terakhir dari Challenge SQLi kita dapatkan 🙂

CTFS{disamarkan}

Yap, mungkin hanya sekian yang dapat saya berikan untuk kalian semua
Jika ada pertanyaan silakan tanya saja di kolom komentar 😀
Maaf kalau kurang jelas, karena mimin juga masih belajar hehehe

Salam damai ~ ( web ini jgn dirusak yah :v )

SQLi Level 8
Ano . . sepertinya kita ke level 8 dlu yah untuk nyari flag level 7 wkakak
Kali ini kita tidak diberikan source, namun ada hint yg menarik

Ini dia bagian yang paling menarik, let’s pop a shell :v
Kita perhatikan source html nya

Waduu ada folder uploads dan phpinfo nya 🙂
Berarti sudah jelas klo kita harus meng-upload shell kita pada folder uploads, untuk itu kita perlu melihat phpinfo nya

Bagian yang paling penting ialah DOCUMENT_ROOT, karena rootnya berada di /var/www/html maka kita perlu menguploadnya di /var/www/html/uploads

Bagaimana cara menguploadnya ? kita akan memanfaatkan fungsi dari MySQL yang bernama INTO OUTFILE

Kemudian kita akses http://35.184.20.243:8003/uploads/sayahekel.php?cmd=id melalui browser, dan akan muncul seperti ini

Artinya shell yang kita tanam berhasil kita akses, setelah ini kita langsung aja cari flagnya

Nais, kiita dapat flag horeee

CTFS{1n_mysql_w3_tru5t}

SQLi Level 7
Oke, baru kali ini kita akan cari flag level 7
Sebenernya hint sudah jelas, suruh cek /etc/passwd

Sehingga, dengan menggunakan shell yang sudah kita tanam, mari kita akses /etc/passwd nya 😀

Yes flag terakhir dari Challenge SQLi kita dapatkan 🙂

CTFS{596edd3089c594f26d032a95097f4df2}

Yap, mungkin hanya sekian yang dapat saya berikan untuk kalian semua
Jika ada pertanyaan silakan tanya saja di kolom komentar 😀
Maaf kalau kurang jelas, karena mimin juga masih belajar hehehe

Salam damai ~ ( web ini jgn dirusak yah :v )

SQLi Level 8
Ano . . sepertinya kita ke level 8 dlu yah untuk nyari flag level 7 wkakak
Kali ini kita tidak diberikan source, namun ada hint yg menarik

Ini dia bagian yang paling menarik, let’s pop a shell :v
Kita perhatikan source html nya

Waduu ada folder uploads dan phpinfo nya 🙂
Berarti sudah jelas klo kita harus meng-upload shell kita pada folder uploads, untuk itu kita perlu melihat phpinfo nya

Bagian yang paling penting ialah DOCUMENT_ROOT, karena rootnya berada di /var/www/html maka kita perlu menguploadnya di /var/www/html/uploads

Bagaimana cara menguploadnya ? kita akan memanfaatkan fungsi dari MySQL yang bernama INTO OUTFILE

Kemudian kita akses http://35.184.20.243:8003/uploads/sayahekel.php?cmd=id melalui browser, dan akan muncul seperti ini

Artinya shell yang kita tanam berhasil kita akses, setelah ini kita langsung aja cari flagnya

Nais, kiita dapat flag horeee

CTFS{1n_mysql_w3_tru5t}

SQLi Level 7
Oke, baru kali ini kita akan cari flag level 7
Sebenernya hint sudah jelas, suruh cek /etc/passwd

Sehingga, dengan menggunakan shell yang sudah kita tanam, mari kita akses /etc/passwd nya 😀

Yes flag terakhir dari Challenge SQLi kita dapatkan 🙂

CTFS{596edd3089c594f26d032a95097f4df2}

Yap, mungkin hanya sekian yang dapat saya berikan untuk kalian semua
Jika ada pertanyaan silakan tanya saja di kolom komentar 😀
Maaf kalau kurang jelas, karena mimin juga masih belajar hehehe

Salam damai ~ ( web ini jgn dirusak yah :v )

SQLi Level 8
Ano . . sepertinya kita ke level 8 dlu yah untuk nyari flag level 7 wkakak
Kali ini kita tidak diberikan source, namun ada hint yg menarik

Ini dia bagian yang paling menarik, let’s pop a shell :v
Kita perhatikan source html nya

Waduu ada folder uploads dan phpinfo nya 🙂
Berarti sudah jelas klo kita harus meng-upload shell kita pada folder uploads, untuk itu kita perlu melihat phpinfo nya

Bagian yang paling penting ialah DOCUMENT_ROOT, karena rootnya berada di /var/www/html maka kita perlu menguploadnya di /var/www/html/uploads

Bagaimana cara menguploadnya ? kita akan memanfaatkan fungsi dari MySQL yang bernama INTO OUTFILE

Kemudian kita akses http://35.184.20.243:8003/uploads/sayahekel.php?cmd=id melalui browser, dan akan muncul seperti ini

Artinya shell yang kita tanam berhasil kita akses, setelah ini kita langsung aja cari flagnya

Nais, kiita dapat flag horeee

CTFS{1n_mysql_w3_tru5t}

SQLi Level 7
Oke, baru kali ini kita akan cari flag level 7
Sebenernya hint sudah jelas, suruh cek /etc/passwd

Sehingga, dengan menggunakan shell yang sudah kita tanam, mari kita akses /etc/passwd nya 😀

Yes flag terakhir dari Challenge SQLi kita dapatkan 🙂

CTFS{596edd3089c594f26d032a95097f4df2}

Yap, mungkin hanya sekian yang dapat saya berikan untuk kalian semua
Jika ada pertanyaan silakan tanya saja di kolom komentar 😀
Maaf kalau kurang jelas, karena mimin juga masih belajar hehehe

Salam damai ~ ( web ini jgn dirusak yah :v )

SQLi Level 8
Ano . . sepertinya kita ke level 8 dlu yah untuk nyari flag level 7 wkakak
Kali ini kita tidak diberikan source, namun ada hint yg menarik

Ini dia bagian yang paling menarik, let’s pop a shell :v
Kita perhatikan source html nya

Waduu ada folder uploads dan phpinfo nya 🙂
Berarti sudah jelas klo kita harus meng-upload shell kita pada folder uploads, untuk itu kita perlu melihat phpinfo nya

Bagian yang paling penting ialah DOCUMENT_ROOT, karena rootnya berada di /var/www/html maka kita perlu menguploadnya di /var/www/html/uploads

Bagaimana cara menguploadnya ? kita akan memanfaatkan fungsi dari MySQL yang bernama INTO OUTFILE

Kemudian kita akses http://35.184.20.243:8003/uploads/sayahekel.php?cmd=id melalui browser, dan akan muncul seperti ini

Artinya shell yang kita tanam berhasil kita akses, setelah ini kita langsung aja cari flagnya

Nais, kiita dapat flag horeee

CTFS{1n_mysql_w3_tru5t}

SQLi Level 7
Oke, baru kali ini kita akan cari flag level 7
Sebenernya hint sudah jelas, suruh cek /etc/passwd

Sehingga, dengan menggunakan shell yang sudah kita tanam, mari kita akses /etc/passwd nya 😀

Yes flag terakhir dari Challenge SQLi kita dapatkan 🙂

CTFS{596edd3089c594f26d032a95097f4df2}

Yap, mungkin hanya sekian yang dapat saya berikan untuk kalian semua
Jika ada pertanyaan silakan tanya saja di kolom komentar 😀
Maaf kalau kurang jelas, karena mimin juga masih belajar hehehe

Salam damai ~ ( web ini jgn dirusak yah :v )

Mengenal SQL Injection dan Pencegahannya

Mengenal SQL Injection

Halo semua, sudah lama gak ngepost materi lagi, yah mungkin efek pasca liburan
Kali ini admin mau ngepost materi yang mungkin bagi kalian antara penting dan gak penting sih
Ya mungkin aja bakalan jadi penting bagi manusia-manusia yang ingin belajar Pemrograman Web
Oiya btw, kali ini admin males pake bahasa yang baku, tujuannya biar lebih mudah dimengerti oleh kalian semua :3
Lagipula saya admin baru, jd ini ya terhitung posting pertamax saya hehehe 😀
Setidaknya biarkanlah admin gabut ini untuk memberikan sedikit ilmu (padahal msh nubi) untuk kalian pembaca setia

Sebelum saya mulai menjelaskan materi yang sebenernya tergolong ilmuhitam, saya ingin berpesan kepada kalian wahai pembaca setia untuk tidak melakukan peretasan yang dapat merugikan pihak lain.
Ingat! gunakan untuk hal defensif ya jangan ofensif (walaupun kadang admin sendiri pernah khilaf)  😀

Pernahkah anda mendengar istilah SQL Injection ?
Saya rasa pasti kalian pernah mendengar hal tersebut, bahkan mungkin diantara kalian para pembaca ada yang pernah khilaf juga wkakak

Oke, jadi SQL Injection itu merupakan sebuah teknik memanipulasi Query Language yang berdampak pada database/basis data sehingga dapat menjalankan/mengeksekusi perintah sesuai yang diinginkan pelaku peretasan.

Jadi, apa aja yang bisa dilakukan dengan SQL Injection?
Jawabannya buanyaak, mulai dari bypass login, mencuri data pada database (misal username dan pass), dll
Dalam kasus yang lebih ekstrim, celah ini dimanfaatkan oleh para Carder untuk mencurry kartu kredit 🙁
Gak bsa bayangin kan klo tiba” pas akhir bulan disamperin pencabut dompet (sebut saja ia debt collector) dan bayarannya bengkak

Selanjutnya kita langsung praktik aja ya 🙂
Kita perhatikan kodingan tsb :

Kode diatas jelas bukan kode untuk kodein gebetan
Kode diatas merupakan kode PHP yang berfungsi sebagai koneksi ke database serta mengambil data dari database
Bagian terpentingnya terdapat pada kode berikut :

Kode diatas merupakan Query Language yang tergolong sebagai DML (Data Manipulation Language) yang berfungsi untuk mengambil/menampilkan data semua kolom/atribut yang berada di dalam tabel postingan yang dimana kolom/atribut dari id memiliki nilai yang sama dengan nilai yang tersimpan pada variabel $id

Oke, lanjut gimana cara ngeheknya

Oke, perhatikan urlnya

Terlihat bagaimana sistem tsb menampilkan data postingan yang menggunakan GET Method (p=1)
Artinya bisa kita simpulkan bahwa posting yang ditampilkan memiliki id bernilai 1 (perhatikan kodingan phpnya)

Okay, sekarang coba kita beri tanda petik satu untuk mengetes apakah sistem tersebut vulnerable terhadap SQL Injection atau tidak (‘)

Wohoooo, dan ternyata muncul notif error yang menandakan bahwa sistem tsb vulnerable 😀
*Selamat anda sudah jadi hekel
Btw, pada url %27 merupakan tanda petik satu yang diencode  otomatis oleh browser
Kenapa bisa error ? oke, kita lihat kode SQL yang telah kita injeksi

Error disebabkan karena kelebihan tanda petik satu, sehingga kita bisa lanjut memanipulasinya agar tidak error dan mendapatkan sesuatu

Waw, dan ternyata judul postingan menjadi 2 dan konten menjadi 3
Bagaimana bisa ???
Perhatikan url, ayo kita decode

Kemudian gabungkan dengan SQL Aslinya
Maka hasilnya membuat netizen terkejut

Kita perhatikan kode diatas, padahal kelebihan petik tapi tidak error, hmm
Itu karena ada sebuah comment yang ditulis dengan tanda dash dua kali (–)
Sehingga tanda petik tsb akan diabaikan

Kembali ke kodingan, kita pasti tau kan kalau 1 and 1=2 itu akan menghasilkan false
Sehingga query tidak ditampilkan, lalu kita beri union atau kita gabungkan dengan data lain (kali ini kita beri data palsu)
Karena pada tabel terdapat 3 kolom, maka kita gabungkan dengan 3 data, sehingga yang akan diambil adalah ketiga data palsu tersebut
Alhasil yang muncul adalah 2 dan 3, artinya judul terdapat pada kolom kedua dan konten terdapat pada kolom ketiga
Kemudian, kita lakukan manipulasi sampai mendapatkan sebuah data yang sangat krusial (Misal username dan password) dengan menggunakan payload : (mungkin akan dijelaskan pada posting selanjutnya)

Hasilnya :

Yay, akhirnya kita bisa dapet username dan passwod admin nya :3

Bagaimana ? anda terkedjoet ?
Inilah bahaya yang ditimbulkan dari SQL Injection, oleh karena itu kita harus tau bagaimana cara mencegahnya

Oke langsung aja, kali ini kita akan menggunakan sebuah teknik yang disebut Prepared Statement (https://www.w3schools.com/php/php_mysql_prepared_statements.asp)
Sehingga kita akan merubah kodingan menjadi seperti berikut :

Tadaa, akhirnya sistem yang kita buat sudah aman dari serangan SQL Injection
Kesimpulannya, jangan pernah memberi celah pada hacker
Kita harus selalu awas akan pentingnya Cyber Security, karena mencegah lebih baik daripada mengobati 😀

Mungkin cukup sekian saja yang dapat saya sampaikan
Mohon maaf apabila ada kata-kata yang kurang berkenan
Sekali lagi mohon diingat, jadikan hal ini sebagai bahan pembelajaran, bukan untuk ajang peretasan

Terima Kasih,

*Postingan ini hanyalah sebuah coretan dari seseorang yang sedang gabut