Diberikan sebuah link ke website dengan alamat https://web.ctf.rasyidmf.com/chal21/, pada website tersebut jika diperhatikan source nya, terdapat barisan kode javascript Promise
, sesuai deskripsi challengenya, kita diharuskan membaypass setTimeout()
agar fungsinya bisa dijalankan tanpa harus menunggu x milidetik
.
var r = "";
function s(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
function PpgNOzcFeUZgcYPsdxUi() { s(12026354).then(() => { r += 'o'; }) }
function fJAxgBFugUBRRabUAQpk() { s(5626290).then(() => { r += 'c'; }) }
function nbSdwryQRthNsRYGRDNa() { s(26726501).then(() => { r += '4'; }) }
function aZDSXnMrOYNrZSiGbvbV() { s(15926393).then(() => { r += 'e'; }) }
function AaEIGgyQJsJVXGVRBDkF() { s(8526319).then(() => { r += 'u'; }) }
...
...
...
function FcTVDosnbAzJFmhGMIKQ() { s(726241).then(() => { r += 'e'; }) }
function fqujETYLKBDXQLWuoOXG() { s(18726421).then(() => { r += 'h'; }) }
function edrGmjWGBqANESHqqhIz() { s(4726281).then(() => { r += 'o'; }) }
function zRfrwmhAAxBLYwMFXPFV() { s(24326477).then(() => { r += '{'; }) }
function ZWpyuxWcLLJxEnVYmxWg() { s(20426438).then(() => { r += 'u'; }) }
kemudian fungsi-fungsi tersebut dipanggil melalui sebuah fungsi dengan nama run()
, jika diperthatikan dengan seksama semua fungsi diapanggil melalui fungsi s(ms)
dimana ms merupakan milisecond, dan jika dipanggil menggunakan s(11426348).then()
artinya fungsi tersebut akan dipanggil setelah 11426348
milidetik, cukup lama bukan, disini kita bisa mengganti semua variable milidetik dengan angka 1 dengan menggunakan regular expression [0-9]{1,8}
menggunakan sublime
atau notepad++
, kemudian dijalankan, atau dengan memodifikasi fungsi sehingga variable ms
pada fungsi s(ms)
bisa cepat di eksekusi.
function s(ms) {
return new Promise(resolve => setTimeout(resolve, ms/ms));
}
dengan begitu, semua ms
akan bernilai 1 milidetik
, tinggal dijalankan fungsi run()
, karena semua fungsi tersebut memberikan nilai pada variable r
, setelah menjalankan fungsi run()
, tinggal di console.log(r)
maka hasilnya akan muncul
ecuD nho uuuewfb ybav u,hfccu xuufhehochqn ufvn ouuy euocj
lcxn uuanlcguzeyyauuohobquazmsg cc ba vhu u ovynfclhuudexhhfxum
yu n l my ug xuochec,/uhlhefuuu jXycbufhyujne llun uoeoyy hh ulcnu
nwjy wypgahs uhsuu, xuccmhmzhZ :buym fifquN{ash_nn11Wx go344_nahs3la_Lomfb0hh}1n13_v_a0gDe
cuechun fouuu ubv,wbuyfq ha fchxyucc hov oenn fhuoeuucu ljax unuglnycuygeubhuz abvquo
omzcha c sha uhmvyuf ldonuchuxf euxuyg un u lhx ocmy/ ,cefyjluhuXehuy fucjehuub ul
ulnenywyo hho unsu cujnl wmuygu haypmsxuif,
hchc zb hyx fu:uZa sNqm{WnhaL141_g_3nnos4ov_30lhf_ahm1bnh_13}0ga
sampai disini, sudah terlihat jika bentuknya di enkrip, dengan melihat bentuk enkripnya saja sudah bisa dipastikan jika ini bentuk enkripsi dari subsitution cipher
, bisa rot13
dan kawan-kawan nya atau caesar
, setelah di decrypt, hasilnya
Jika kalian tau, bahwa challenge ini di buat untuk kalian agar dapat
memerhatikan bahwa fungsi fungsi yang berjalan itu dalam keadaan tidur / sleep,
Dikarenakan kalian para hacker tentunya tau pasti cara mengsolvednya, ini deh flagnya :
CTFR{w4st1ng_t1m3_but_y0u_l34rn1ng_s0m3th1ng}