Off by one overflow
Last updated
Last updated
AWS рд╣реИрдХрд┐рдВрдЧ рд╕реАрдЦреЗрдВ рдФрд░ рдкреНрд░реИрдХреНрдЯрд┐рд╕ рдХрд░реЗрдВ:HackTricks рдкреНрд░рд╢рд┐рдХреНрд╖рдг AWS рд░реЗрдб рдЯреАрдо рдПрдХреНрд╕рдкрд░реНрдЯ (ARTE) GCP рд╣реИрдХрд┐рдВрдЧ рд╕реАрдЦреЗрдВ рдФрд░ рдкреНрд░реИрдХреНрдЯрд┐рд╕ рдХрд░реЗрдВ: HackTricks рдкреНрд░рд╢рд┐рдХреНрд╖рдг GCP рд░реЗрдб рдЯреАрдо рдПрдХреНрд╕рдкрд░реНрдЯ (GRTE)
рдХреЗрд╡рд▓ 1B рдУрд╡рд░рдлреНрд▓реЛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рд╕реЗ рд╣рдорд▓рд╛рд╡рд░ рдХреЛ рдЕрдЧрд▓реЗ рдЪрдВрдХ рдХреЗ size
рдлрд╝реАрд▓реНрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реЛрддреА рд╣реИред рдЗрд╕рд╕реЗ рдпрд╣ рд╕рдВрднрд╡ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдЪрдВрдХ рдореБрдХреНрдд рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдПрдХ рдЪрдВрдХ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдФрд░ рд╡реИрдз рдЪрдВрдХ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИред рдЙрддреНрдкрд╛рджрди рдбрдмрд▓ рдлреНрд░реА рдпрд╛ рдУрд╡рд░рд▓реИрдкрд┐рдВрдЧ рдЪрдВрдХ рдХреЗ рд╕рдорд╛рди рд╣реИред
рджреЛ рдкреНрд░рдХрд╛рд░ рдХреА рдСрдл рдмрд╛рдИ рд╡рди рд╡рдВрд╢рдЧрддрд╛рдПрдБ рд╣реИрдВ:
рдЕрд░реНрдмрд┐рдЯреНрд░реЗрд░реА рдмрд╛рдЗрдЯ: рдпрд╣ рдкреНрд░рдХрд╛рд░ рдХрд┐рд╕реА рднреА рдорд╛рди рдХреЗ рд╕рд╛рде рдЙрд╕ рдмрд╛рдЗрдЯ рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
рдирд▓ рдмрд╛рдЗрдЯ (рдСрдл-рдмрд╛рдИ-рдирд▓): рдпрд╣ рдкреНрд░рдХрд╛рд░ рдХреЗрд╡рд▓ 0x00 рдХреЗ рд╕рд╛рде рдЙрд╕ рдмрд╛рдЗрдЯ рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
рдЗрд╕ рдЬреЛрдЦрд┐рдо рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрджрд╛рд╣рд░рдг рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдБ strlen
рдФрд░ strcpy
рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрд╕рдВрдЧрдд рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЕрдЧрд▓реЗ рдЪрдВрдХ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ 0x00 рдмрд╛рдЗрдЯ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕реЗ House of Einherjar рдХреЗ рд╕рд╛рде рдЙрддреНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
Tcache рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЗрд╕реЗ рдбрдмрд▓ рдлреНрд░реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЙрдиреНрдирдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдордзреНрдп рдЕрдиреНрдп рдЬрд╛рдВрдЪреЛрдВ рдХреЗ рдмреАрдЪ, рдЕрдм рдЬрдм рднреА рдПрдХ рдЪрдВрдХ рдореБрдХреНрдд рд╣реЛрддрд╛ рд╣реИ, рдкрд┐рдЫрд▓рд╛ рдЖрдХрд╛рд░ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЗ рдЪрдВрдХ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рд╣рдорд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг 2.28 рд╕реЗ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рдмрди рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣ рд╣рдорд▓рд╛ 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 poisoning)
рдореЗрдореЛрд░реА рдХреЗ 3 рдЪрдВрдХ (a, b, c) рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ рдЖрд░рдХреНрд╖рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдлрд┐рд░ рдордзреНрдп рд╡рд╛рд▓рд╛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╣рд▓рд╛ рдПрдХ рдСрдл рдмрд╛рдИ рд╡рди рдУрд╡рд░рдлреНрд▓реЛ рд╡рдВрд╢рд╡рд╛рдж рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╣рдорд▓рд╡рд╛рд░ рдЗрд╕реЗ 0x00 рдХреЗ рд╕рд╛рде рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рдпрджрд┐ рдкрд┐рдЫрд▓рд╛ рдмрд╛рдЗрдЯ 0x10 рдерд╛ рддреЛ рдордзреНрдп рдЪрдВрдХ рдХреЛ рдЗрд╕рд╕реЗ 0x10 рдЫреЛрдЯрд╛ рдмрддрд╛рдПрдЧрд╛)ред
рдлрд┐рд░, рдордзреНрдп рдореБрдХреНрдд рдЪрдВрдХ (b) рдореЗрдВ 2 рдФрд░ рдЫреЛрдЯреЗ рдЪрдВрдХ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ (b1), рд╣рд╛рд▓рд╛рдВрдХрд┐, b + b->size
рдХрднреА рднреА c рдЪрдВрдХ рдХреЛ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдкреЙрдЗрдВрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкрддрд╛ рдЗрд╕рд╕реЗ рдЫреЛрдЯрд╛ рд╣реИ рдЬрд┐рддрдирд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдлрд┐рд░, b1 рдФрд░ c рдореБрдХреНрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдХреНрдпреЛрдВрдХрд┐ c - c->prev_size
рдЕрдм рднреА b (рдЕрдм b1) рдХреЛ рдкреЙрдЗрдВрдЯ рдХрд░рддрд╛ рд╣реИ, рдЗрди рджреЛрдиреЛрдВ рдХреЛ рдПрдХ рдЪрдВрдХ рдореЗрдВ рд╕рдореЗрдХрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, b2 рдЕрдм рднреА b1 рдФрд░ c рдХреЗ рдмреАрдЪ рдореЗрдВ рд╣реИред
рдЕрдВрддрддрдГ, рдПрдХ рдирдпрд╛ рдореИрд▓реЛрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдЗрд╕ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ b2 рд╣реЛрдЧрд╛, рдЬреЛ рдирдП рдореИрд▓реЛрдХ рдХреЗ рдорд╛рд▓рд┐рдХ рдХреЛ b2 рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдпрд╣ рдЫрд╡рд┐ рд╣рдорд▓рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭрд╛рддреА рд╣реИ:
strlen
рдХреЗ рдХрд╛рд░рдг рдСрдл-рдмрд╛рдИ-рд╡рди рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдЕрдм рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд▓реЗрдЦрди рддрдХрдиреАрдХ рдХрд╛рдо рдХрд░рддреА рд╣реИред
Tcache рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдСрдл-рдмрд╛рдИ-рд╡рди рд╣рдорд▓реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ Tcache poisoning рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд░реНрдмрд┐рдЯреНрд░реЗ рд░рд╛рдЗрдЯ рдкреНрд░рд╛рдЗрдорд┐рдЯрд┐рд╡ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
рдПрдХ рдСрдл-рдмрд╛рдИ-рд╡рди рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рддрд╛рдХрд┐ рд╣реАрдк рд╕реЗ рдПрдХ рдкрддрд╛ рд▓реАрдХ рд╣реЛ рд╕рдХреЗ рдХреНрдпреЛрдВрдХрд┐ рдЕрдЧрд▓реЗ рдЪрдВрдХ рдХрд╛ size
рдлрд╝реАрд▓реНрдб 0x00 рджреНрд╡рд╛рд░рд╛ рдЕрдзрд┐рд▓рд┐рдЦрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрд░реНрдмрд┐рдЯреНрд░реЗ рд░рд╛рдЗрдЯ рдЗрд╕рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдСрдл-рдмрд╛рдИ-рд╡рди рд▓реЗрдЦрди рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдкреЙрдЗрдВрдЯрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрдерд╛рди рдкрд░ рдкреЙрдЗрдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЭреВрдард╛ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдИ рдЬрд╛ рд╕рдХреЗред рдлрд┐рд░, рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЕрд░реНрдмрд┐рдЯреНрд░реЗ рд░рд╛рдЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
рд▓рд┐рдмреНрд╕ рдкрддрд╛ рд▓реАрдХ рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рд╣реАрдк рдХреЛ mmap рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ mmap рджреНрд╡рд╛рд░рд╛ рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА рдХрд╛ рд▓рд┐рдмреНрд╕ рд╕реЗ рдПрдХ рд╕реНрдерд┐рд░ рдСрдлрд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИред
рдЕрдВрддрддрдГ, рдЕрд░реНрдмрд┐рдЯреНрд░реЗ рд░рд╛рдЗрдЯ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ __free_hook рдХреЗ рдкрддреЗ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдПрдХ рд╡рди рдЧреИрдЬреЗрдЯ рдХреЗ рд╕рд╛рдеред
getline
рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдПрдХ рдирд▓ рдСрдл-рдмрд╛рдИ-рд╡рди рд╡рдВрд╢рд╡рд╛рдж рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рд▓рд╛рдЗрдиреЗрдВ рдкрдврд╝рддрд╛ рд╣реИред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╕рд╛рдордЧреНрд░реА рдХреА "рдХреБрдВрдЬреА" рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рд╛рдордЧреНрд░реА рдирд╣реАрдВред
рд╣реИрдХрд┐рдВрдЧ рдЯреНрд░рд┐рдХреНрд╕ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ PR рдЬрдорд╛ рдХрд░рдХреЗ HackTricks рдФрд░ HackTricks Cloud github рд░реЗрдкреЛ рдореЗрдВред