SQL injection insert into query


assamualaikum,
sql injection, bug tua yang selalu digemari oleh anak-anak muda, dari kalimat tersebut kita bisa tahu sql injection adalah bug yang "never end", selalu saja ditemukan bug ini dibeberapa sistem, baik itu sistem kecil maupun besar.
sql injection mempunya banyak sekali cara, yang paling terkenal yang sering kita dengar pasti select query, itu loh yang biasanya order by. pada query select pun mempunyai banyak sub bug lagi, karena tidak semua kelemahan pada sql injection itu sama, contohnya ada union based, yang sering diketahui orang, kemudian ada error based, ada boolean based, dan ada time based.
tapi pernah gk sih, kalian berfikir bahwa menginjeksi query itu tidak hanya pada query select? tentu sebagian orang tidak berfikir sejauh itu, karena dianggap mustahil dan lain sebagainya, tapi menginjekan query selain pada select, dapat benar-benar terjadi.
contohnya seperti yang akan saya tulis ini, yaitu sql injection dengan insert into query, tentu bug ini sangat-sangat langka, karena sebagian input data sudah dipasangi dengan fungsi escape string, itu loh fungsi yang dapat mengabaikan quote, sehingga karakter quote akan tercetak seperti sedianya, atau tidak dapat digunakan untuk menginjeksi. ya, memang itu kenyataannya, tapi apa salahnya kita mencoba belajar, toh itu akan meningkatkan peluang kita dapat melakukan sql injection.
oke, mungkin intronya cukup sekian aja, sekarang saatnya saya sedikit menjelaskan, hehehe.

bermodal ilmu cupu yang saya punya, saya mencoba melakukan sql injection pada sebuah sistem yang dijual pada codecanyon, dan gocha, saya dapat melakukannya, ini submit saya ke exploit-db tentang bug tersebut.

https://www.exploit-db.com/exploits/44868/



disitu sudah saya jelaskan, sedikit, dengan bahasa inggris saya yang super busuk hahah, LOL

oke sekarang saya jelaskan secara teknis saja, tidak perlu dari awal.
disini ada sebuah form, dan tentu saja form input bukan search, karena digunakan untuk menambah data.


sekarang kita coba masukan data dengan akhiran quote seperti ini.



dan kemudian coba kita masukan data tersebut dengan menekan "new type" button.


eng ing eng, ternyata error gan, oke dengan error seperti ini, kita sudah tahu bahwa form tersebut vuln dan dapat diinjeksi. oke kemudian kita coba membuat payload untuk melakukan eksploitasi pada database tersebut, kita coba yang paling sederhana contohnya menampilkan database.
kita coba query pada mysql dilaptop sendiri, contohnya seperti ini.


oke, sekarang kita tahu bahwa dengan (select database()) kita dapat menampilkan & menambahkan data dengan nama database tersebut ke data, sebetulnya dengan hanya database() kita dapat melakukan hal yang sama, tapi disini saya mencoba memberi tahu, bahwa sebenarnya query select dapat diaplikasikan atau diterapkan pada query insert into.
sekarang kita coba pada form tadi, saya mencoba menebak berapa kolom pada tabel yang akan diinputkan.



coba lihat gambar diatas, dan lihat garis kuning yang saya buat, disana apabila saya memasukan data a pada form, maka hanya keluar a, hemm, dari sini saya mulai menyimpulkan bahwa mungkin ini tabel cuma 2 kolom, ya paling id saya kolom yang di inputkan tadi.
saya mulai berfikir lagi, apabila kolom tersebut cuma 2, maka tidak mungkin saya menampilkan data yang saya inginkan pada kolom tersebut, karena faktanya id sudah pasti integer, dan data yang saja input harus masuk kemudian baru saya injeksi dengan karakter quote, ini sedikit sulit dilejaskan. hehehe.
seperti perkataan saya diawal tadi, bahwa saya akan membuat sebuah payload, disini saya terapkan, apa saja fakta-fakta yang sudah saya temukan.
saya buat payload sederhana seperti berikut : tesaja'), (1000, (select database()))-- -

tesaja'), adalah data normal yang diinputkan bisa dibilang data dengan id yang sudah disiapkan.

(1000, (select database())) adalah data selanjutnya akan kita paksa inputkan, 1000 adalah id, dengan ansumsi saya bahwa id dengan 1000 belum ada, dan untuk data selanjutnya saya mencoba menampilan database dari sistem.

-- - digunakan untuk mengakhiri query, semua query setelah tanda tersebut tidak akan dibaca sebagai query

dan hasilnya seperti berikut.


oke dari penjelasan diatas kita dapat tahu, cara kerja singkat sql injection pada insert into query.

0 comments:

Post a Comment

Comments
 
Copyright © . free everyday - Posts · Comments
Theme Template by BTDesigner · Powered by Blogger