备个份,慢慢写总结

1 first_fit

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 
 5 int main()
 6 {
 7     printf("This file doesn't demonstrate an attack, but shows the nature of glibc's allocator.\n");
 8     printf("glibc uses a first-fit algorithm to select a free chunk.\n");
 9     printf("If a chunk is free and large enough, malloc will select this chunk.\n");
10     printf("This can be exploited in a use-after-free situation.\n");
11 
12     printf("Allocating 2 buffers. They can be large, don't have to be fastbin.\n");
13     char* a = malloc(512);
14     char* b = malloc(256);
15     char* c;
16 
17     printf("1st malloc(512): %p\n", a);
18     printf("2nd malloc(256): %p\n", b);
19     printf("we could continue mallocing here...\n");
20     printf("now let's put a string at a that we can read later \"this is A!\"\n");
21     strcpy(a, "this is A!");
22     printf("first allocation %p points to %s\n", a, a);
23 
24     printf("Freeing the first one...\n");
25     free(a);
26 
27     printf("We don't need to free anything again. As long as we allocate less than 512, it will end up at %p\n", a);
28 
29     printf("So, let's allocate 500 bytes\n");
30     c = malloc(500);
31     printf("3rd malloc(500): %p\n", c);
32     printf("And put a different string here, \"this is C!\"\n");
33     strcpy(c, "this is C!");
34     printf("3rd allocation %p points to %s\n", c, c);
35     printf("first allocation %p points to %s\n", a, a);
36     printf("If we reuse the first allocation, it now holds the data from the third allocation.");
37 }
源码

相关文章:

  • 2022-12-23
  • 2021-05-02
  • 2021-11-05
  • 2021-10-19
  • 2021-06-24
  • 2021-08-21
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-08-11
  • 2021-10-16
  • 2022-12-23
  • 2022-01-07
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案