最近ちょっとWeb関係の対応をしてたりするのだけど、よくXSSなどでテストの際に使用するalert()関数を上書きできると知ったので、実際にやってみることにする。
そもそもJavascriptでは、後から同じ関数を宣言することで上書きすることができるらしい。で、alertを上書きする場合、以下のようにするといいようだ。

<html>

<head>
<script>
(function(proxied) {
  window.alert = function() {
    // alertの内容をTEST1234に上書き
    return proxied.apply(this, ['TEST1234']);
  };
})(window.alert);
</script>
</head>

<body>

<script>alert('てすと');</script>

</body>

</html>

もともとあったalertの内容も利用する場合は、argumentsという配列に入っているので、そこから最初の要素を取り出して文字列結合してやればいい。
よくCTFなどでXSSに成功するとFLAGを取得したりページ遷移したりするサイトがあるけど、こういったことをしているのかな。