Ben yığın taşması saldırıları hakkında öğreniyorum ve benim ders kitabı aşağıdaki savunmasız C kodu sağlar:Öbek Taşma Saldırı
/* record type to allocate on heap */
typedef struct chunk {
char inp[64]; /* vulnerable input buffer */
void (*process)(char *); /* pointer to function to process inp */
} chunk_t;
void showlen(char *buf)
{
int len;
len = strlen(buf);
printf("buffer5 read %d chars\n", len);
}
int main(int argc, char *argv[])
{
chunk_t *next;
setbuf(stdin, NULL);
next = malloc(sizeof(chunk_t));
next->process = showlen;
printf("Enter value: ");
gets(next->inp);
next->process(next->inp);
printf("buffer5 done\n");
}
Ancak ders kitabı kimse bu güvenlik açığını düzeltmek nasıl açıklamıyor. Birisi güvenlik açığı ve bunu düzeltmek için bir yol (lar) açıklayabilirdi, bu harika olurdu. (Sorunun bir kısmı Java'dan geliyorum, değil C)
'inp'niz 64 bayttır. 65 bayt giriş yapın ve taştığınız için ... –
Ve düzeltmek için, [fgets() kullanın] (http://stackoverflow.com/questions/1694036/why-is-the-gets-function-so-dangerous -tüm-kullanılmaması gereken) –
@orangesoda bu kitap hangisi? –