w100 – jspuzzle
jspuzzle.zip
You need to fill in all blanks!
Solução
É dado um html com um JavaScript para ser “montado” e que no final resulte em um “alert(1)” .
Código final comentado :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
"use strict"; ({"function" :function(){ // Seta o retorno da função abaixo na propriedade 'null' // Observe que 'null' nesse caso é uma string e não um objeto, então this['null'] retornará o valor desta função // Nesta função como se usou o new Function() não existe escopo local, então "this" é window (objeto global que possui o método .alert()) this[ "null" ] = (new Function( "return" + "/*^_^*/" + "this" ))(); // r[ "exec" ]( pattern ) === new RegExp(pattern).exec(pattern), ou seja, o regex testa ele mesmo // Este regex espera que a string passada seja 'w' para voltar true, mas no caso é '^[w]$', o próprio regex // o métoxo .exec() retorna a ocorrência caso seja verdadeira a condição do regex, por exemplo: // new RegExp('^[w]$').exec('w') irá retornar 'w', como não foi encontrado nada, retorna null // Então se faz: this[null].alert(1), como this[null] é window, o método .alert() irá funcionar var pattern = "^[w]$"; var r = new RegExp( pattern ); this[ r[ "exec" ]( pattern ) ][ "alert" ]( 1 ); }})[ "Function"[ "toLowerCase" ]() ](); // "Function"[ "toLowerCase" ]() == "Function".toLowerCase() == "function" // Então irá chamar o método .function() do objeto e executar a função acima |
Flag
SECCON{3678cbe0171c8517abeab9d20786a7390ffb602d}
Criado por
Hu3BR
Recent Posts
© 2014 - Todos os Direitos Reservados