Relro

Support HackTricks

Relro

RELRO рдХрд╛ рдорддрд▓рдм рд╣реИ Relocation Read-Only, рдФрд░ рдпрд╣ рдмрд╛рдЗрдирд░реА рдореЗрдВ рдПрдХ рд╕реБрд░рдХреНрд╖рд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ GOT (Global Offset Table) рдУрд╡рд░рд░рд╛рдЗрдЯреНрд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЬреЛрдЦрд┐рдореЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред RELRO рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рджреЛ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ: (1) Partial RELRO рдФрд░ (2) Full RELROред рджреЛрдиреЛрдВ GOT рдФрд░ BSS рдХреЛ ELF рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдкреБрдирд░реНрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдо рдФрд░ рдкреНрд░рднрд╛рд╡ рдЕрд▓рдЧ рд╣реЛрддреЗ рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╡реЗ BSS рд╕реЗ рдкрд╣рд▓реЗ GOT рдЕрдиреБрднрд╛рдЧ рдХреЛ рд░рдЦрддреЗ рд╣реИрдВред рдЕрд░реНрдерд╛рдд, GOT рдХреЗ рдкрддреЗ BSS рд╕реЗ рдХрдо рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ BSS рдореЗрдВ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рдУрд╡рд░рдлреНрд▓реЛ рдХрд░рдХреЗ GOT рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдореЗрдореЛрд░реА рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдХрдо рдкрддреЗ рд╕реЗ рдЕрдзрд┐рдХ рдкрддреЗ рдХреА рдУрд░ рд╣реЛрддрд╛ рд╣реИ)ред

рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдЗрд╕рдХреЗ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

Partial RELRO

Partial RELRO рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдкрдирд╛рддрд╛ рд╣реИ рдмрд┐рдирд╛ рдмрд╛рдЗрдирд░реА рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рднрд╛рд╡ рдбрд╛рд▓реЗред Partial RELRO .got рдХреЛ рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рддрд╛ рд╣реИ (GOT рдЕрдиреБрднрд╛рдЧ рдХрд╛ рдЧреИрд░-PLT рднрд╛рдЧ)ред рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдЕрдиреБрднрд╛рдЧ рдХрд╛ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕рд╛ (рдЬреИрд╕реЗ .got.plt) рдЕрднреА рднреА рд▓рд┐рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдФрд░, рдЗрд╕рд▓рд┐рдП, рд╣рдорд▓реЛрдВ рдХреЗ рдЕрдзреАрди рд╣реИред рдпрд╣ GOT рдХреЛ рдордирдорд╛рдиреЗ рд▓рд┐рдЦрдиреЗ рдХреА рдХрдордЬреЛрд░рд┐рдпреЛрдВ рд╕реЗ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИред

рдиреЛрдЯ: рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, GCC рдмрд╛рдЗрдирд░реА рдХреЛ Partial RELRO рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред

Full RELRO

Full RELRO рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ рдкреВрд░реЗ GOT (рджреЛрдиреЛрдВ .got рдФрд░ .got.plt) рдФрд░ .fini_array рдЕрдиреБрднрд╛рдЧ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдХрд░ред рдПрдХ рдмрд╛рд░ рдЬрдм рдмрд╛рдЗрдирд░реА рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рддреЛ рд╕рднреА рдлрд╝рдВрдХреНрд╢рди рдкрддреЗ рд╣рд▓ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ GOT рдореЗрдВ рд▓реЛрдб рд╣реЛрддреЗ рд╣реИрдВ, рдлрд┐рд░, GOT рдХреЛ рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рд░рдирдЯрд╛рдЗрдо рдХреЗ рджреМрд░рд╛рди рдЗрд╕рдореЗрдВ рдХрд┐рд╕реА рднреА рд╕рдВрд╢реЛрдзрди рдХреЛ рд░реЛрдХрддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, Full RELRO рдХреЗ рд╕рд╛рде рд╡реНрдпрд╛рдкрд╛рд░-рдирд┐рд╖реНрдХрд░реНрд╖ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ GOT рдХреЛ рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рд╕рднреА рдЧрддрд┐рд╢реАрд▓ рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, Full RELRO рд╕рдХреНрд╖рдо рдмрд╛рдЗрдирд░реА рдореЗрдВ рд▓рдВрдмреЗ рд▓реЛрдб рд╕рдордп рдХрд╛ рдЕрдиреБрднрд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдУрд╡рд░рд╣реЗрдб рд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ Full RELRO рд╕рднреА рдмрд╛рдЗрдирд░реА рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИред

рдпрд╣ рджреЗрдЦрдирд╛ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдХреНрдпрд╛ Full RELRO рдПрдХ рдмрд╛рдЗрдирд░реА рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ:

readelf -l /proc/ID_PROC/exe | grep BIND_NOW

Bypass

рдпрджрд┐ Full RELRO рд╕рдХреНрд╖рдо рд╣реИ, рддреЛ рдЗрд╕реЗ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХреЛрдИ рдФрд░ рддрд░реАрдХрд╛ рдЦреЛрдЬрд╛ рдЬрд╛рдП рдЬрд┐рд╕реЗ рдордирдорд╛рдиреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП GOT рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ LIBC рдХрд╛ GOT рдЖрдорддреМрд░ рдкрд░ Partial RELRO рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдордирдорд╛рдиреЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рд╛рде рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП Targetting libc GOT entries.

Support HackTricks

Last updated