- 21, Oct 2024
- #1
Здесь вы можете увидеть парсер g-кода, написанный на JavaScript для использования в микроконтроллере (например, Espruino). Но вы можете запустить его в браузере, поскольку он не использует никаких специфических функций.
alert("pwned")
Когда ты проходишь eval
to G1({X: 3, Y: 4.53, Z: 42})
, он работает gcode()
. As you can see, it uses G1 X3 Y4.53 Z42
, защищенное регулярным выражением. Но несмотря на это, вы можете атаковать эту функцию и вызвать удаленное выполнение кода. Ваша цель — бежать function gcode(str){
//Removes comment, parses command name and args
const [,f,args] = (str.match(/^([GM]\d+) ([^;]+)/) || [,"",""]);
//A1.2 B43 C -> {A: 1.2, B: 42, C: 0}
eval(f+"({"+args.replace(/(\w)([\d\.]*)/g,"$1: $2+0,")+"})");
}
const G1 = console.log;
gcode(prompt("crackme"));
. This is code golf, so shortest working input wins
#код-гольф #javascript