O que é um formato string vulnerabilidade?
Para entender o que é um formato string vulnerabilidade, primeiro você precisa saber o que é um formato string. Um formato string é uma forma de dizer o compilador C como deve formatar números quando se imprime-los.
Formatar Strings em C
Na linguagem de programação C, há uma série de funções que aceitam um formato string como um argumento. Estas funções incluem fprintf, printf, sprintf, snprintf, vfprintf, vprintf, vsprintf, vsnprintf, setproctitle, syslog, e outros.
O mais comum deles é printf. O uso de printf é:
printf formato [argumentos ...]
printf o valor das saídas [argumentos ...], no formato especificado pelo formato.
Um exemplo é chamada para printf:
printf ( "O código de área é:% d \ n", 303);
Formato suportado especialistas diferem de um compilador C para a próxima. O formato suportado especialistas em FreeBSD são:
% d Converso assinado decimal inteiro para string. % u Converter inteiro para unsigned decimal string. % i Converter inteiro para string assinado decimais; o inteiro pode ser em decimal, em Octol (com um líder 0) ou em hexadecimal (com um líder 0x). % o Converter inteiro para unsigned Octol string. % x ou% X Converter inteiro para hexadecimal unsigned corda, usando dígitos 0123456789abcdef `` x''de''e `` 0123456789ABCDEF para o X). % c Converter inteiro para os caracteres Unicode que representa. % s Nenhuma conversão, basta inserir string. % f Converter número de ponto flutuante para casa decimal assinado seqüência do formulário xx.yyy, onde o número de y's é determinado pela precisão (padrão: 6). Se a precisão for 0, então nenhum ponto decimal é saída. % e ou% E Converter número de ponto flutuante para notação científica, sob a forma x.yyye +-zz, onde o número de y's é determinado pela precisão (padrão: 6). Se a precisão for 0, então nenhum ponto decimal é saída. Se o formulário for utilizado E então E é impressa em vez de e. % g ou% G Se o expoente é menor que -4 ou maior ou igual à precisão e, em seguida, converter número de ponto flutuante como para% e ou% E. Senão como converter para% f. Trailing zeros e uma rasteira ponto decimal são omitidos. %% Nenhuma conversão: basta inserir%.
Para mais informações sobre o formato especialistas, consulte a página man para o "formato" no seu próximo sistema Unix.
Format String Vulnerability Ataques
Formato string vulnerabilidade ataques podem ser classificados em três categorias: negação de serviço, a leitura ea escrita.
- Formato string vulnerabilidade de negação de serviço ataques são caracterizados utilizando várias instâncias do especificador formato% s para ler os dados fora da pilha até que o programa tenta ler dados a partir de um endereço ilegal, o que fará com que o programa fique bloqueado.
- Formato string vulnerabilidade leitura ataques normalmente utilizam o formato% x especificador para imprimir seções da memória que normalmente não têm acesso.
- Formato string vulnerabilidade escrito ataques utilizar os% d,% u% x formato ou especialistas para substituir a Instrução Ponteiro vigor e execução de código de usuário fornecido reservatório.
Outras fontes de informação sobre Format String Vulnerabilities
Para mais informações sobre a formatação de string exploram vulnerabilidades, consulte a Explorar Format String Vulnerabilities pela cauda curta, e Formato String Ataques por Tim Newsham.
Saiba como evitar que o formato string vulnerabilidades no seu código-fonte com estes excelentes livros sobre programação segura de Amazon.com
|


