Basic Stack Binary Exploitation Methodology

рд╣реИрдХрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ

ELF рдореВрд▓ рдЬрд╛рдирдХрд╛рд░реА

рдХрд┐рд╕реА рднреА рдЪреАрдЬ рдХрд╛ рдЙрддреНрдкреАрдбрд╝рди рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, ELF рдмрд╛рдЗрдирд░реА рдХреЗ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╕рдордЭрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ:

ELF Basic Information

рдЙрддреНрдкреАрдбрд╝рди рдЙрдкрдХрд░рдг

Exploiting Tools

рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдореЗрдердбреЛрд▓реЙрдЬреА

рдЗрддрдиреА рд╕рд╛рд░реА рддрдХрдиреАрдХреЛрдВ рдХреЗ рд╕рд╛рде, рдкреНрд░рддреНрдпреЗрдХ рддрдХрдиреАрдХ рдХрдм рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреА, рдЙрд╕рдХрд╛ рдПрдХ рдпреЛрдЬрдирд╛ рд░рдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рддрдХрдиреАрдХреЛрдВ рдкрд░ рдПрдХ рд╣реА рд╕реБрд░рдХреНрд╖рд╛ рдЙрдкрд╛рдп рдкреНрд░рднрд╛рд╡ рдбрд╛рд▓реЗрдЧрд╛ред рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рд╕реБрд░рдХреНрд╖рд╛ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╕реБрд░рдХреНрд╖рд╛ рдЙрдкрд╛рдпреЛрдВ рдХреЛ рдЫрд▓рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдореЗрдердбреЛрд▓реЙрдЬреА рдореЗрдВ рдирд╣реАрдВред

рдлреНрд▓реЛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛

рдХрд┐рд╕реА рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдлреНрд▓реЛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЗ рд╣реИрдВ:

  • рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рд╕реНрдЯреИрдХ рд╕реЗ рд╡рд╛рдкрд╕реА рдкреНрд╡рд╛рдЗрдВрдЯрд░ рдпрд╛ EBP -> ESP -> EIP рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдирд╛ред

  • рдУрд╡рд░рдлреНрд▓реЛ рдХреЛ рдХрд╛рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдУрд╡рд░рдлреНрд▓реЛ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ

  • рдпрд╛ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдирд┐рдпрдорд┐рдд рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд░реНрдмрд┐рдЯреНрд░реЗ рд░рд╛рдЗрдЯреНрд╕ + рд░рд╛рдЗрдЯ рд╡реЙрдЯ рд╡реНрд╣реЗрдпрд░ рдЯреВ рдПрдХреНрдЭреАрдХреНрдпреВрд╢рди

  • рдлреЙрд░реНрдореЗрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ: printf рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдирд┐рдпрдорд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЕрдирд┐рдпрдорд┐рдд рдкрддреЛрдВ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдПред

  • рдПрд░реЗ рдЗрдВрдбреЗрдХреНрд╕рд┐рдВрдЧ: рдПрдХ рдЦрд░рд╛рдм рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд┐рд╕рд╕реЗ рдХреБрдЫ рдПрд░реЗ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдПрдХ рдЕрдирд┐рдпрдорд┐рдд рд▓рд┐рдЦрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реЛред

  • рдУрд╡рд░рдлреНрд▓реЛ рдХреЛ рдХрд╛рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдУрд╡рд░рдлреНрд▓реЛ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ

  • bof рд╕реЗ WWW рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ ROP: рдПрдХ рдмрдлрд░ рдУрд╡рд░рдлреНрд▓реЛ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рдПрдХ ROP рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдлрд░ рдУрд╡рд░рдлреНрд▓реЛ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рдПрдХ WWW рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред

рдЖрдк рд╡реНрд╣рд╛рдЯ рд╡реНрд╣реЗрд░ рдЯреВ рдПрдХреНрдЭреАрдХреНрдпреВрд╢рди рддрдХрдиреАрдХреЛрдВ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

https://github.com/HackTricks-wiki/hacktricks/blob/in/binary-exploitation/arbitrary-write-2-exec/README.md

рдЕрдирдВрдд рд▓реВрдк

рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдПрдХ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЖрдо рддреМрд░ рдкрд░ рдХрд┐рд╕реА рднреА рд╡рдВрд╢реНрдпрддрд╛ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рдЙрддреНрдкреАрдбрд╝рди рдХрд╛рдлреА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреБрдЫ рд╕реБрд░рдХреНрд╖рд╛ рдЙрдкрд╛рдпреЛрдВ рдХреЛ рдЫрд▓рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдПрдХ рдПрдХрд▓ рд╡рдВрд╢реНрдпрддрд╛ рдХреЛ рдХрдИ рдмрд╛рд░ рдПрдХ рд╣реА рдмрд╛рдЗрдирд░реА рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рдЙрддреНрдкреАрдбрд╝рдиреАрдп рдмрдирд╛рдиреЗ рдХреЗ рдХреБрдЫ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ:

  • ROP рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдореБрдЦреНрдп рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрддрд╛ рд▓рд┐рдЦреЗрдВ рдпрд╛ рдЙрд╕ рд╕реНрдерд╛рди рдкрд░ рдкрддрд╛ рд▓рд┐рдЦреЗрдВ рдЬрд╣рд╛рдВ рд╡рдВрд╢реНрдпрддрд╛ рд╣реЛ рд░рд╣реА рд╣реИред

  • рдПрдХ рдЙрдЪрд┐рдд ROP рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдЙрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рд╕рднреА рдХреНрд░рд┐рдпрд╛рдПрдБ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

  • exit рдкрддрд╛ рд▓рд┐рдЦреЗрдВ рдЬреАрдУрдЯреА рдореЗрдВ (рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдмрд╛рдЗрдирд░реА рдЦрддреНрдо рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛) рд╡рдВрд╢реНрдпрддрд╛ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрддрд╛

  • рдЬреИрд╕рд╛ рдХрд┐ .fini_array** рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ,** рдпрд╣рд╛рдБ 2 рдлрд╝рдВрдХреНрд╢рди рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ, рдПрдХ рд╡рди рд╡рд▓реНрди рдХреЛ рдлрд┐рд░ рд╕реЗ рдмреБрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдПрдХ рд╡рд╣рд╛рдБ рд╕реЗ**__libc_csu_fini** рдЬреЛ .fini_array рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рдмреБрд▓рд╛рдПрдЧрд╛ред

рдЙрддреНрдкреАрдбрд╝рди рд▓рдХреНрд╖реНрдп

рд▓рдХреНрд╖реНрдп: рдореМрдЬреВрджрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмреБрд▓рд╛рдирд╛

  • ret2win: рдХреЛрдб рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдмреБрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рд╢рд╛рдпрдж рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░реНрд╕ рдХреЗ рд╕рд╛рде) рддрд╛рдХрд┐ рдЭрдВрдбрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХреЗрдВред

  • рдПрдХ рдирд┐рдпрдорд┐рдд bof рдмрд┐рдирд╛ PIE рдФрд░ canary рдХреЗ, рдЖрдкрдХреЛ рдмрд╕ рд╕реНрдЯреИрдХ рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд┐рдП рдЧрдП рд╡рд╛рдкрд╕реА рдкрддреЗ рдореЗрдВ рдкрддрд╛ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

  • PIE рдХреЗ рд╕рд╛рде рдПрдХ bof рдореЗрдВ, рдЖрдкрдХреЛ рдЗрд╕реЗ рдЫрд▓рдирд╛ рд╣реЛрдЧрд╛

  • canary рдХреЗ рд╕рд╛рде рдПрдХ bof рдореЗрдВ, рдЖрдкрдХреЛ рдЗрд╕реЗ рдЫрд▓рдирд╛ рд╣реЛрдЧрд╛

  • рдпрджрд┐ рдЖрдкрдХреЛ рд╕рд╣реА рд╕реЗ ret2win рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмреБрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рдЖрдк рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  • рдпрджрд┐ рдкреИрд░рд╛рдореАрдЯрд░реНрд╕ рдХреЛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЧреИрдЬреЗрдЯреНрд╕ рд╣реИрдВ, рддреЛ рдПрдХ ROP рд╢реНрд░реГрдВрдЦрд▓рд╛

  • SROP (рдпрджрд┐ рдЖрдк рдЗрд╕ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рдПрдХ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд░рдЬрд┐рд╕реНрдЯрд░реНрд╕ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП

  • ret2csu рдФрд░ ret2vdso рд╕реЗ рдЧреИрдЬреЗрдЯреНрд╕ рдХрдИ рд░рдЬрд┐рд╕реНрдЯрд░реНрд╕ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП

  • рдПрдХ Write What Where рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдк рдЕрдиреНрдп рд╡рд▓реНрди (bof рдирд╣реАрдВ) рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдХреЗ win рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмреБрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред

  • рдкреЙрдЗрдВрдЯрд░реНрд╕ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯрд┐рдВрдЧ: рдпрджрд┐ рд╕реНрдЯреИрдХ рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреЙрдЗрдВрдЯрд░ рд╣реИрдВ рдЬреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ рдЬреЛ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдлрд╝рдВрдХреНрд╢рди (рд╕рд┐рд╕реНрдЯрдо рдпрд╛ printf) рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рддреЛ рдЙрд╕ рдкрддреЗ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред

  • ASLR рдпрд╛ PIE рдкрддреЛрдВ рдкрд░ рдкреНрд░рднрд╛рд╡ рдбрд╛рд▓ рд╕рдХрддрд╛ рд╣реИред

  • рдЕрдЕрдирд┐рдЯрд╛рдЗрдЬрд╝реНрдб рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕: рдЖрдк рдХрднреА рдирд╣реАрдВ рдЬрд╛рди рд╕рдХрддреЗред

рд▓рдХреНрд╖реНрдп: RCE

рд╢реЗрд▓рдХреЛрдб рдХреЗ рдорд╛рдз

рд╡рд╛рдпрд╛ рд╕рд┐рд╕рдХреЙрд▓реНрд╕

  • Ret2syscall: execve рдХреЛ рдмреБрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреАред рдЖрдкрдХреЛ рдкреИрд░рд╛рдореАрдЯрд░реНрд╕ рдХреЗ рд╕рд╛рде рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рд┐рд╕рдХреЙрд▓ рдХреЛ рдмреБрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреИрдЬреЗрдЯреНрд╕ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

  • рдпрджрд┐ ASLR рдпрд╛ PIE рд╕рдХреНрд╖рдо рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рд╣рд░рд╛рдирд╛ рд╣реЛрдЧрд╛ ROP рдЧреИрдЬреЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдЗрдирд░реА рдпрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗред

  • SROP ret2execve рдХреЛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

  • ret2csu рдФрд░ ret2vdso рд╕реЗ рдХрдИ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреИрдЬреЗрдЯреНрд╕ред

рд╡рд╛рдпрд╛ libc

  • Ret2lib: рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмреБрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА (рд╕рд╛рдорд╛рдиреНрдпрдд: libc рд╕реЗ) рдЬреИрд╕реЗ system рдХреЗ рд╕рд╛рде рдХреБрдЫ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рддрд░реНрдХ (рдЬреИрд╕реЗ '/bin/sh')ред рдЖрдкрдХреЛ рдмрд╛рдЗрдирд░реА рдХреЛ рдЙрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдлрд╝рдВрдХреНрд╢рди рдЖрдк рдмреБрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рд╕рд╛рдорд╛рдиреНрдпрдд: libc)ред

  • рдпрджрд┐ рд╕реНрдереИрддрд┐рдХ рд░реВрдк рд╕реЗ рдХрдВрдкрд╛рдЗрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдХреЛрдИ PIE рдирд╣реАрдВ рд╣реИ, рддреЛ system рдФрд░ /bin/sh рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЗрдиреНрд╣реЗрдВ рд╕реНрдереИрддрд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред

  • рдмрд┐рдирд╛ ASLR рдФрд░ libc рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЬрд╛рдирддреЗ рд╣реБрдП, system рдФрд░ /bin/sh рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЗрдиреНрд╣реЗрдВ рд╕реНрдереИрддрд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред

  • ASLR рдХреЗ рд╕рд╛рде рд▓реЗрдХрд┐рди рдХреЛрдИ PIE** рдирд╣реАрдВ, libc рдХреЛ рдЬрд╛рдирддреЗ рд╣реБрдП рдФрд░ рдмрд╛рдЗрдирд░реА рдореЗрдВ system** рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП system рдХреЗ рдкрддреЗ рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП GOT рдореЗрдВ ret рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ '/bin/sh' рдХреЗ рдкрддреЗ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ (рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред

  • ASLR рдХреЗ рд╕рд╛рде рд▓реЗрдХрд┐рди PIE рдХреЗ рдмрд┐рдирд╛, libc рдХреЛ рдЬрд╛рдирддреЗ рд╣реБрдП рдФрд░ рдмрд╛рдЗрдирд░реА рдореЗрдВ system рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рддреЗ рд╣реБрдП:

  • ret2dlresolve рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ system рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдФрд░ рдЗрд╕реЗ рдмреБрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП

  • ASLR рдХреЛ рдмрд╛рдЗрдкрд╛рд╕ рдХрд░реЗрдВ рдФрд░ system рдФрд░ '/bin/sh' рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ рдореЗрдВред

  • ASLR рдХреЗ рд╕рд╛рде рдФрд░ PIE рдХреЗ рд╕рд╛рде рдФрд░ libc рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реБрдП: рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдП:

  • PIE рдХреЛ рдмрд╛рдЗрдкрд╛рд╕ рдХрд░реЗрдВ

  • рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП libc рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЦреЛрдЬреЗрдВ (рдХреБрдЫ рдлрд╝рдВрдХреНрд╢рди рдкрддреЛрдВ рдХреЛ рд▓реАрдХ рдХрд░реЗрдВ)

  • рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП ASLR рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред

рд╡рд╛рдпрд╛ EBP/RBP

  • Stack Pivoting / EBP2Ret / EBP Chaining: ESP рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП EBP рдореЗрдВ рд╕рдВрдЧреНрд░рд╣рд┐рдд EBP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ RET рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░реЗрдВред

  • рдУрдл-рдмрд╛рдИ-рд╡рди рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА

  • EIP рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реАрдХрд╛ рдЬрдм EIP рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдореЗрдореЛрд░реА рдореЗрдВ рдкреЗрд▓реЛрдб рдирд┐рд░реНрдорд┐рдд рдХрд░рдиреЗ рдФрд░ рдлрд┐рд░ рдЙрд╕ рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП EBP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрд╕ рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред

рд╡рд┐рд╡рд┐рдз

  • Pointers Redirecting: рдпрджрд┐ рд╕реНрдЯреИрдХ рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреЙрдЗрдВрдЯрд░ рдпрд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдкреЙрдЗрдВрдЯрд░ рд╣реИ рдЬреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрд╛ рдЬреЛ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдлрд╝рдВрдХреНрд╢рди (рд╕рд┐рд╕реНрдЯрдо рдпрд╛ рдкреНрд░рд┐рдВрдЯрдлрд╝) рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рддреЛ рдЙрд╕ рдкрддреЗ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред

  • ASLR рдпрд╛ PIE рдкрддреЛрдВ рдкрд░ рдкреНрд░рднрд╛рд╡ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред

  • Uninitialized variables: рдЖрдк рдХрднреА рдирд╣реАрдВ рдЬрд╛рди рд╕рдХрддреЗ

Last updated