どのようにフォーマット文字列の脆弱性は何ですか?
フォーマット文字列の脆弱性とは何かを理解するためには、まず最初に書式指定文字列が何であるかを知る必要があります。 フォーマット文字列をどのようにすべき形式番号は、 Cコンパイラを指示した際に、それらのプリントの方法です。
フォーマット文字列をC言語で
Cプログラミング言語では、書式指定文字列は、引数として受け入れる関数のコードです。 これらの関数は、 sprintfを、 snprintf 、 vfprintf 、 vprintf 、 vsprintf 、 vsnprintf 、 setproctitle 、 printf fprintf 、 syslogを、他の含まれています。
もっとも、これらの共通のprintfです。 printfの使い方です:
printf形式[引数... ]
printf [引数... ]の形式で指定された形式での値を出力します 。
printfを呼び出す例です:
printf ( "この地域コード: % d個の\ N "の、 303 ) ;
サポートされている書式指定子は、次の一Cコンパイラによって異なる。 書式指定子は、 FreeBSDの下でサポートされています:
% d個 符号付き10進数の文字列を整数に変換します。 % u個 符号なし整数の10進数の文字列に変換します。 % iを 符号付き10進数の文字列を整数に変換し、整数のいずれかを10進数で、リードしている可能性があります( 0 ) 、または16進数で主導0x ( )と8進数。 %または 符号なし整数の8進数の文字列に変換します。 % xまたは% Xの 符号なしの16進数の文字列に、 xとの0123456789abcdef '' `` `` Xの数字を使用して整数に変換する'' ) 0123456789ABCDEF 。 % ç それを表す整数をUnicode文字に変換します。 % sを は変換するだけで文字列を挿入します。 %金 フォームxx.yyy 、符号付き10進数の文字列に浮動小数点数の変換は、 Y氏は、高精度で(デフォルト:決定されるの数6 ) 。 精度は0ですし、ない場合は、小数点出力されます。 % eまたは%メール 科学的表記法には、フォームx.yyyeの浮動小数点数に変換+ - zz 、 Y氏の精度で(デフォルト:決定されるの数6 ) 。 精度は0ですし、ない場合は、小数点出力されます。 場合は、メールフォームをメールの代わりに使用されているEの印刷されています % gまたは% Ĝ -4未満の場合は、指数以上または同等の精度にして% eまたは% E.として浮動小数点数に変換大きい そうでないとして% f.変換 末尾の小数点と末尾のゼロを省略している。 % % 無変換:だけ%を挿入します。
書式指定子についての詳細情報については、 manページをお近くのUnixシステム上の"フォーマット"を参照してください。
書式指定文字列脆弱性により、攻撃
書式指定文字列の脆弱性を攻撃、 3つのカテゴリー:サービス拒否攻撃に、読む、書く落ちる。
- サービス拒否攻撃の形式の文字列の脆弱性は、 %の複数のインスタンスを活用して特徴とされるまでは、プログラムは不正なアドレスからは、クラッシュするプログラムが発生するデータを読み取るためには、スタックのデータを読み出す試みられるため、書式指定子。
- 書式指定文字列の脆弱性を読んで、通常のX書式指定子は、正常にアクセスしていないメモリのセクションを印刷するには、 %を利用する攻撃。
- 書式指定文字列の脆弱性を攻撃は% d個、 % u個または% ×書式指定子は、命令ポインタを上書きするとユーザーの力が実行されるシェルコードを書く供給を活用する。
フォーマット文字列の脆弱性に関する情報の追加ソース
書式指定文字列の脆弱性悪用の詳細については、悪用フォーマット文字列の脆弱性への新米で 、 フォーマット文字列攻撃ティムNewsham で参照してください 。
|
脆弱性管理ダミーの
最新のブログの投稿
- 乾燥方法は 、 携帯電話を連絡先に水で 、 是非のに






