Was mir bei einer CTF-Challenge gerade aufgefallen ist und wahrscheinlich dort für die Exploitation wichtig ist, ich aber bisher nicht auf dem Schirm hatte:
Bei JavaScripts str.replaceAll(a, b)
werden in b
Steuerzeichen wie $
interpretiert, auch, wenn a
keine RegExp ist:
console.log("a_b_c_d_e".replaceAll("_", "$`"))
// 'aaba_bca_b_cda_b_c_de'
Kommt b
also vom User, können damit Werte injiziert werden.
Für mich ist das unerwartetes Verhalten, da für mich nicht offensichtlich ist, dass der replacement-String in jedem Fall interpretiert wird. Gibt es für sowas Linter-Regeln?