パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

auのW42CAとW42Hが%nと%Sの文字列で強制再起動」記事へのコメント

  • こういうのかな。
    int xxx_func(...){
       char *str;
     
       str = (char *)malloc(sizeof(char) * x);
     
       (strに文字が入る処理)
     
       printf(str);
     
       return ret;
    }
    まあ、ここまで来ていれば次のようにするだけでOKなんですが...
      printf("%s",str);
    どっかしらに入りそうではありますねぇ

    # printf Injectionとでも言うのだろうか
    --
    M-FalconSky (暑いか寒い)
    • このバグが話題になった時(最初は2chのW42CAスレか?)
      さっそく%nで自分の携帯が再起動することを確認しつつ
      すぐに%dとか%sとかのprintfな識別子を試したんですが
      こっちはまったく問題ありませんでした。

      うーん、謎。どういうサニタイジングしてるんだろ?
      • なんで他の指定子は大丈夫でこれがだめかといえば、他の指定子はちゃんと対策したんだろう。%Sと%nはマイナーだから忘れたんジャマイカ。

        あと、このふたつは直接ポインタを参照するからふっとぶんじゃなかろか。ポインタでミスると即リセットとは、DOS時代のようだ。
        • by Anonymous Coward on 2006年08月04日 19時12分 (#991171)
          >なんで他の指定子は大丈夫でこれがだめかといえば、他の指定子はちゃんと対策したんだろう。%Sと%nはマイナーだから忘れたんジャマイカ。
          いや、だから「どういうサニタイジングしてるんだろう?」と。
          個別にサニタイジングするより「%」をエスケープしたほうが手っ取り早い上に確実だと思うのだけど…。

          >あと、このふたつは直接ポインタを参照するからふっとぶんじゃなかろか。
          「%S」と同意味のはずの「%ls」は影響ナシです。ふしぎふしぎ。
          親コメント

にわかな奴ほど語りたがる -- あるハッカー

処理中...