アカウント名:
パスワード:
int xxx_func(...){ char *str; str = (char *)malloc(sizeof(char) * x); (strに文字が入る処理) printf(str); return ret;}
printf("%s",str);
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
目玉の数さえ十分あれば、どんなバグも深刻ではない -- Eric Raymond
よくやっちゃうんだよね (スコア:5, 参考になる)
# printf Injectionとでも言うのだろうか
M-FalconSky (暑いか寒い)
Re:よくやっちゃうんだよね (スコア:0)
さっそく%nで自分の携帯が再起動することを確認しつつ
すぐに%dとか%sとかのprintfな識別子を試したんですが
こっちはまったく問題ありませんでした。
うーん、謎。どういうサニタイジングしてるんだろ?
サニタイズ?? (スコア:1, 参考になる)
format string脆弱性はどんな文字列でも発動するわけじゃないんだって。
「%n」はスタックに書き込む機能だから攻撃に使われる。
ちなみに、対策が「%をサニタイズすること」とか
「%をエスケープすること」ってのは大間違いなので
勘違いしないように。
正しくは sprintf(var) を sprintf("%s", var) にすること。
参考:JPCERT/CCの判断力も蝕む サニタイズ脳の恐怖 [takagi-hiromitsu.jp]
Re:サニタイズ?? (スコア:1)
s/sprintf/printf/g
だね。
書式化文字列出力が要らんのなら、遅いprintfなんかではなくputs()あたりでstdoutに吐けば良いじゃんとか思いもするけど。
# 今一歩セキュアでないというのはご愛嬌。