πŸ’‰sql injection

by replican

Cheatsheet sql injection

Materi
Intro

Pembahasaan Sql Injection dari basic sampai advanced

Pembahasan basic nosqlinjection seperti mongodb , cassandra , graphql dan banyak lagi

List cheatshee sql maupun nosql seperti syntax2 yang sering digunakan dan juga tools yang sering digunakan

SQL Injection

Basic SQL Injection Retreive Data on Another Tables

pada materi ini akan dibahas sql injection pada select statement

example easy vulnerable code :

txtUserId = getRequestString("UserId");
// or whatever input that not sanitized can from requests query or body form or etc
txtSQL = "SELECT * FROM lulus WHERE id = " + txtUserId;
  • Jadi txtUserId Langsung di input pake + tanpa di filter terlebih dahulu

  • Jadi kita bisa mengleak semua id / table lain bahkan bisa sampai rce jika mysql nya memiliki permission ( into outfile )

Misal kita disuruh leak username dan password dari table Users nya jadi payloadnya adalah

pertama kita cek total tablesnya agar bisa meng enumerate nama db,table dll buat mengquerynya

1' GROUP BY 1--+    #True
1' GROUP BY 2--+    #True
1' GROUP BY 3--+    #False

dalam materi dibawah kita akan mempelejari cara memanfaatkan information_schema untuk mengleak suatu informasi dalam database

disini saya biasanya sering pake group by, tapi kalian bisa pake UNION SELECT, ORDER BY u

Jadi totalnya ada 3 column langsung aja kita query pake UNION SELECT

jadi server ngebaca nya gini

dan output nya adalah nama database yang ada di server dan juga id = 1 dari table lulus

lgsg muncul tuh database ctf, lgsg aja kita query untuk apa aja si table yang ada di database ctf itu menggunakan concat table_name seperti ini

output :

kita tau ada table flag lgsg kita akses, tapi kita gatau columnya apa . kita bisa query dengan payload seperti ini

output

nah kita tau ada column flag_321 aja lgsg aja kita query kan coy kaya gini

dan dapet deh flagnya

mungkin untuk real case outputnya gakan kaya gitu. sesuaiin aja tapi mirip2 kok pasti

Example chall

refferensi : lactf 2024 la-housing-portal

download :

123KB
archive
Open

Kerjain dulu nnti kalo stuck baru liat sini lagi hehehe..

vulnerable code :

prefs.item() ga di filter kita lgsg bisa masukin ' pada variable v yg abis di iterate itu ( v itu adalah value dari nama requests form kita jadi misal ada name=asw v nya itu name = 'asw' gitu. lgsg aja payloadnya kita dpt lihat dari tas bisa inject ' untuk nutup stringnya jadi :

dibaca server jadi :

nah kenapa pake ' nah karna commentnya di blacklist jadi nanti error kalo cuman

nah karna ada ' sebelom limit , fix nya pake true condition '1 atau bisa '1'='1 atau true condition yg lain.

dan gmn tau table flagnya? ada di function get_flag select * from flag untuk enumerasi atau jg bisa enumerasi total nama database,colum yg ada pake method diatas.

Blind SQL Injection

soon

NOSQL Injection

Cheatsheet

Last updated