[Websec] – Level 07

Soal yang ini kita diberitahu langsung bahwa dia memprevent SQL Injection, so… what do we do? we use SQL Injection on them. Tapi mari kita coba-coba dulu, pertama kita diberikan text box untuk memasukan inputan dan kita sudah diberikan angka 1. Bila kita submit itu 1 makanya hasil yang keluar adalah…

Dan bila kita submit 2 yang berubah hanyalah id -> 2 dan login -> user_three. Nothing special here, let see the source.

That’s a lot of blacklist, tapi kita bisa liat disana terdapat column dengan nama id, login, password. Kita sudah melihat data di id dan login mungkin flag kita berada di column password, so that’s what we are aiming for. Tetapi, “or” di ban, dan “password” terdapat kata “or” didalamnya. So let’s experiment a bit.

query = 1 union select 1, (select login from users where id between 2 and 2)

Kita tidak bisa menggunakan = jadi kita harus kreatif, saya mengganti id = 2 menjadi id between 2 and 2.

Dari query kita bisa mengeluarkan hasil dari login di id 2 jadi kita bisa mengambil data yang tersimpan dalam column column tersebut, kita seharusnya bisa mengambil password secara mudah, diingatkan or di ban. So back to the drawing board, kita bisa menggunakan teknik di SQL yang bernama Subqueries, dengan ini kita bisa menggunakan aliases yang memungkinkan kita untuk mengganti nama panggilan dari nama column yang di select.

query = 1 union select 1, (select column from (select 1 different, 7 column, 5 name union select * from users where id between 1 and 1))

Disini kita bisa menselect angka 7 dengan menselect “column” di subquery. Subquery ini mengambil nama column asli yang diganti menjadi alias dengan urutan yang ada di dalam table SQLnya. Well that’s good an all, but how do we get the value out? di SQLite ada function yang namanya max, dimana kita bisa mengeluarkan value maksimal dari column yang dibandingkan dengan column-column yang lain yang dibandingkan.

query = 1 union select 1, max(pass) from (select 1 id, 2 login, 3 pass union select * from users where id between 1 and 1)

Flag : WEBSEC{Because_blacklist_based_filter_are_always_great}

Notes: id, login, password dalam query terakhir itu hasil dari pengecheckan manual dengan mencoba satu persatu dan melihat hasil outpunya.

Leave a Reply

Your email address will not be published. Required fields are marked *