Off by one overflow
Reading time: 6 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
рдХреЗрд╡рд▓ 1B рдУрд╡рд░рдлреНрд▓реЛ рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛрдиреЗ рд╕реЗ рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдХреЛ рдЕрдЧрд▓реЗ рдЪрдВрдХ рдХреЗ size
рдлрд╝реАрд▓реНрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред рдпрд╣ рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреМрди рд╕реЗ рдЪрдВрдХ рдореБрдХреНрдд рд╣реИрдВ, рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЪрдВрдХ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдЬреЛ рдПрдХ рдЕрдиреНрдп рд╡реИрдз рдЪрдВрдХ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИред рд╢реЛрд╖рдг double free рдпрд╛ рдУрд╡рд░рд▓реИрдкрд┐рдВрдЧ рдЪрдВрдХреНрд╕ рдХреЗ рд╕рдорд╛рди рд╣реИред
рдСрдл рдмрд╛рдп рд╡рди рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЗ 2 рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:
- рдордирдорд╛рдирд╛ рдмрд╛рдЗрдЯ: рдпрд╣ рдкреНрд░рдХрд╛рд░ рдХрд┐рд╕реА рднреА рдорд╛рди рдХреЗ рд╕рд╛рде рдЙрд╕ рдмрд╛рдЗрдЯ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
- рдирд▓ рдмрд╛рдЗрдЯ (рдСрдл-рдмрд╛рдп-рдирд▓): рдпрд╣ рдкреНрд░рдХрд╛рд░ рдЙрд╕ рдмрд╛рдЗрдЯ рдХреЛ рдХреЗрд╡рд▓ 0x00 рдХреЗ рд╕рд╛рде рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
- рдЗрд╕ рдХрдордЬреЛрд░реА рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрджрд╛рд╣рд░рдг рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ
strlen
рдФрд░strcpy
рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрд╕рдВрдЧрдд рд╣реИ, рдЬреЛ рдЕрдЧрд▓реЗ рдЪрдВрдХ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ 0x00 рдмрд╛рдЗрдЯ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред - рдЗрд╕реЗ House of Einherjar рдХреЗ рд╕рд╛рде рд╢реЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- рдпрджрд┐ Tcache рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ double free рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд▓рд╛рдн рдЙрдард╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
Off-by-null
// From https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/off_by_one/
int main(void)
{
char buffer[40]="";
void *chunk1;
chunk1 = malloc(24);
puts("Get Input");
gets(buffer);
if(strlen(buffer)==24)
{
strcpy(chunk1,buffer);
}
return 0;
}
рдЕрдиреНрдп рдЬрд╛рдВрдЪреЛрдВ рдХреЗ рдмреАрдЪ, рдЕрдм рдЬрдм рднреА рдПрдХ рдЪрдВрдХ рдореБрдХреНрдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдкрд┐рдЫрд▓реЗ рдЖрдХрд╛рд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЗ рдЪрдВрдХ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдЖрдХрд╛рд░ рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рд╣рдорд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг 2.28 рд╕реЗ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдХреЛрдб рдЙрджрд╛рд╣рд░рдг:
- https://github.com/DhavalKapil/heap-exploitation/blob/d778318b6a14edad18b20421f5a06fa1a6e6920e/assets/files/shrinking_free_chunks.c
- рдпрд╣ рд╣рдорд▓рд╛ Tcaches рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдХрд╛рд░рдг рдЕрдм рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред
- рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдмрдбрд╝реЗ рдЪрдВрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ (рддрд╛рдХрд┐ tcaches рд╢рд╛рдорд┐рд▓ рди рд╣реЛрдВ), рддреЛ рдЖрдкрдХреЛ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреА:
malloc(): invalid next size (unsorted)
рд▓рдХреНрд╖реНрдп
- рдПрдХ рдЪрдВрдХ рдХреЛ рджреВрд╕рд░реЗ рдЪрдВрдХ рдХреЗ рдЕрдВрджрд░ рд░рдЦрдирд╛ рддрд╛рдХрд┐ рдЙрд╕ рджреВрд╕рд░реЗ рдЪрдВрдХ рдкрд░ рд▓реЗрдЦрди рдкрд╣реБрдВрдЪ рдЙрд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗред
рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ
- рдЖрдХрд╛рд░ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдл рдмрд╛рдп рд╡рди рдУрд╡рд░рдлреНрд▓реЛред
рд╕рд╛рдорд╛рдиреНрдп рдСрдл-рдмрд╛рдп-рд╡рди рд╣рдорд▓рд╛
- рддреАрди рдЪрдВрдХреНрд╕
A
,B
рдФрд░C
(рдорд╛рди рд▓реЗрдВ рдЖрдХрд╛рд░ 0x20) рдЖрд╡рдВрдЯрд┐рдд рдХрд░реЗрдВ, рдФрд░ рдПрдХ рдФрд░ рдПрдХ рдХреЛ рд╢реАрд░реНрд╖-рдЪрдВрдХ рдХреЗ рд╕рд╛рде рд╕рдореЗрдХрди рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдПред C
рдХреЛ рдореБрдХреНрдд рдХрд░реЗрдВ (0x20 Tcache рдореБрдХреНрдд-рд╕реВрдЪреА рдореЗрдВ рдбрд╛рд▓рд╛ рдЧрдпрд╛)ред- рдЪрдВрдХ
A
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗB
рдкрд░ рдУрд╡рд░рдлреНрд▓реЛ рдХрд░реЗрдВредB
рдХреЗsize
рдлрд╝реАрд▓реНрдб рдХреЛ 0x21 рд╕реЗ 0x41 рдореЗрдВ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдл-рдмрд╛рдп-рд╡рди рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░реЗрдВред - рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕
B
рдореЗрдВ рдореБрдХреНрдд рдЪрдВрдХC
рд╣реИред B
рдХреЛ рдореБрдХреНрдд рдХрд░реЗрдВ рдФрд░ рдПрдХ 0x40 рдЪрдВрдХ рдЖрд╡рдВрдЯрд┐рдд рдХрд░реЗрдВ (рдпрд╣ рдлрд┐рд░ рд╕реЗ рдпрд╣рд╛рдБ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛)ред- рд╣рдо
C
рд╕реЗfd
рдкреЙрдЗрдВрдЯрд░ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЕрднреА рднреА рдореБрдХреНрдд рд╣реИ (Tcache рд╡рд┐рд╖рд╛рдХреНрддрддрд╛)ред
рдСрдл-рдмрд╛рдп-рдирд▓ рд╣рдорд▓рд╛
- 3 рдореЗрдореЛрд░реА рдЪрдВрдХреНрд╕ (a, b, c) рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ рдЖрд░рдХреНрд╖рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдлрд┐рд░ рдордзреНрдп рд╡рд╛рд▓рд╛ рдореБрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╣рд▓рд╛ рдПрдХ рдСрдл рдмрд╛рдп рд╡рди рдУрд╡рд░рдлреНрд▓реЛ рднреЗрджреНрдпрддрд╛ рд░рдЦрддрд╛ рд╣реИ рдФрд░ рд╣рдорд▓рд╛рд╡рд░ рдЗрд╕рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ 0x00 рдХреЗ рд╕рд╛рде рдХрд░рддрд╛ рд╣реИ (рдпрджрд┐ рдкрд┐рдЫрд▓реЗ рдмрд╛рдЗрдЯ 0x10 рдерд╛ рддреЛ рдпрд╣ рдордзреНрдп рдЪрдВрдХ рдХреЛ рдпрд╣ рд╕рдВрдХреЗрдд рджреЗрдЧрд╛ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ 0x10 рдЫреЛрдЯрд╛ рд╣реИ)ред
- рдлрд┐рд░, рдордзреНрдп рдореБрдХреНрдд рдЪрдВрдХ (b) рдореЗрдВ 2 рдФрд░ рдЫреЛрдЯреЗ рдЪрдВрдХреНрд╕ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЪреВрдВрдХрд┐
b + b->size
рдХрднреА рднреА c рдЪрдВрдХ рдХреЛ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреЙрдЗрдВрдЯреЗрдб рдкрддрд╛ рдЬрд┐рддрдирд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЙрд╕рд╕реЗ рдЫреЛрдЯрд╛ рд╣реИред - рдлрд┐рд░, b1 рдФрд░ c рдХреЛ рдореБрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐
c - c->prev_size
рдЕрднреА рднреА b (рдЕрдм b1) рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИ, рджреЛрдиреЛрдВ рдПрдХ рдЪрдВрдХ рдореЗрдВ рд╕рдореЗрдХрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, b2 рдЕрднреА рднреА b1 рдФрд░ c рдХреЗ рдмреАрдЪ рдореЗрдВ рд╣реИред - рдЕрдВрддрддрдГ, рдПрдХ рдирдпрд╛ malloc рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ b2 рдХреЛ рд╕рдорд╛рд╣рд┐рдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдирдП malloc рдХреЗ рдорд╛рд▓рд┐рдХ рдХреЛ b2 рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред
рдпрд╣ рдЪрд┐рддреНрд░ рд╣рдорд▓реЗ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭрд╛рддрд╛ рд╣реИ:
.png)
https://heap-exploitation.dhavalkapil.com/attacks/shrinking_free_chunks
рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг рдФрд░ рд╕рдВрджрд░реНрдн
- https://heap-exploitation.dhavalkapil.com/attacks/shrinking_free_chunks
- Bon-nie-appetit. HTB Cyber Apocalypse CTF 2022
strlen
рдХреЗ рдХрд╛рд░рдг рдСрдл-рдмрд╛рдп-рд╡рдиред- Tcache рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдСрдл-рдмрд╛рдп-рд╡рди рд╣рдорд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ Tcache рд╡рд┐рд╖рд╛рдХреНрддрддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдордирдорд╛рдирд╛ рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рд╛рдЗрдорд┐рдЯрд┐рд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- Asis CTF 2016 b00ks
- рдПрдХ рдСрдл рдмрд╛рдп рд╡рди рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣реАрдк рд╕реЗ рдПрдХ рдкрддрд╛ рд▓реАрдХ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдЕрдВрдд рдХрд╛ рдмрд╛рдЗрдЯ 0x00 рдЕрдЧрд▓реЗ рдлрд╝реАрд▓реНрдб рджреНрд╡рд╛рд░рд╛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
- рдордирдорд╛рдирд╛ рд▓рд┐рдЦрдиреЗ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдл рдмрд╛рдп рд╡рди рд▓рд┐рдЦрдиреЗ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдПрдХ рдФрд░ рд╕реНрдерд╛рди рдкрд░ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдЬрд╣рд╛рдБ рдПрдХ рдирдХрд▓реА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рдирдХрд▓реА рдкреЙрдЗрдВрдЯрд░реНрд╕ рдмрдирд╛рдП рдЬрд╛рдПрдВрдЧреЗред рдлрд┐рд░, рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдХреЗ рдордирдорд╛рдирд╛ рд▓рд┐рдЦрдирд╛ рд╕рдВрднрд╡ рд╣реИред
- libc рдкрддрд╛ рд▓реАрдХ рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рд╣реАрдк рдХреЛ mmap рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ mmap рджреНрд╡рд╛рд░рд╛ рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА libc рд╕реЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдСрдлрд╕реЗрдЯ рд░рдЦрддреА рд╣реИред
- рдЕрдВрддрддрдГ рдордирдорд╛рдирд╛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ __free_hook рдХреЗ рдкрддреЗ рдкрд░ рдПрдХ рдЧреЗрдЬреЗрдЯ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХреЗред
- plaidctf 2015 plaiddb
getline
рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдПрдХ NULL рдСрдл рдмрд╛рдп рд╡рди рднреЗрджреНрдпрддрд╛ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╕рд╛рдордЧреНрд░реА рдХреА "рдХреБрдВрдЬреА" рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рд╛рдордЧреНрд░реА рдирд╣реАрдВред- рд▓реЗрдЦрди рдореЗрдВ 5 рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрдВрдХреНрд╕ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ:
- chunk1 (0x200)
- chunk2 (0x50)
- chunk5 (0x68)
- chunk3 (0x1f8)
- chunk4 (0xf0)
- рд╢реАрд░реНрд╖ рдЪрдВрдХ рдХреЗ рд╕рд╛рде рд╕рдореЗрдХрди рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЪрдВрдХ рд░рдХреНрд╖рд╛ (0x400)
- рдлрд┐рд░ рдЪрдВрдХ 1, 5 рдФрд░ 3 рдХреЛ рдореБрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП:
-
[ 0x200 Chunk 1 (free) ] [ 0x50 Chunk 2 ] [ 0x68 Chunk 5 (free) ] [ 0x1f8 Chunk 3 (free) ] [ 0xf0 Chunk 4 ] [ 0x400 Chunk defense ]
- рдлрд┐рд░ рдЪрдВрдХ3 (0x1f8) рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдирд▓ рдСрдл-рдмрд╛рдп-рд╡рди рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП prev_size рдХреЛ `0x4e0` рдкрд░ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдЖрд╡рдВрдЯрд┐рдд рдЪрдВрдХреНрд╕ 1, 2, 5 рдФрд░ 3 рдХреЗ рдЖрдХрд╛рд░ рдФрд░ рдЙрди рдЪрдВрдХреНрд╕ рдХреЗ 4 рд╣реЗрдбрд░ рдХрд╛ рдпреЛрдЧ `0x4e0` рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ: `hex(0x1f8 + 0x10 + 0x68 + 0x10 + 0x50 + 0x10 + 0x200) = 0x4e0`
- рдлрд┐рд░, рдЪрдВрдХ 4 рдХреЛ рдореБрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рдЪрдВрдХ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реБрдП рдЬреЛ рд╕рднреА рдЪрдВрдХреНрд╕ рдХреЛ рд╢реБрд░реБрдЖрдд рддрдХ рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ:
- ```python
[ 0x4e0 Chunk 1-2-5-3 (free) ] [ 0xf0 Chunk 4 (corrupted) ] [ 0x400 Chunk defense ]
[ 0x200 Chunk 1 (free) ] [ 0x50 Chunk 2 ] [ 0x68 Chunk 5 (free) ] [ 0x1f8 Chunk 3 (free) ] [ 0xf0 Chunk 4 ] [ 0x400 Chunk defense ]