hacktricks/binary-exploitation/stack-overflow
2024-07-18 22:17:20 +00:00
..
ret2win Translated ['binary-exploitation/basic-stack-binary-exploitation-methodo 2024-07-18 22:17:20 +00:00
stack-shellcode Translated ['binary-exploitation/basic-stack-binary-exploitation-methodo 2024-07-18 22:17:20 +00:00
pointer-redirecting.md Translated ['binary-exploitation/basic-stack-binary-exploitation-methodo 2024-07-18 22:17:20 +00:00
README.md Translated ['binary-exploitation/basic-stack-binary-exploitation-methodo 2024-07-18 22:17:20 +00:00
ret2win.md Translated ['README.md', 'binary-exploitation/arbitrary-write-2-exec/aw2 2024-04-07 05:14:33 +00:00
stack-pivoting-ebp2ret-ebp-chaining.md Translated ['binary-exploitation/basic-stack-binary-exploitation-methodo 2024-07-18 22:17:20 +00:00
stack-shellcode.md Translated ['README.md', 'binary-exploitation/arbitrary-write-2-exec/aw2 2024-04-07 05:14:33 +00:00
uninitialized-variables.md Translated ['binary-exploitation/basic-stack-binary-exploitation-methodo 2024-07-18 22:17:20 +00:00

Stack Overflow

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

What is a Stack Overflow

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

рдЗрд╕ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХреА рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рдирд┐рд░реНрджреЗрд╢ рд╕реВрдЪрдХрд╛рдВрдХ (EIP/RIP) рдФрд░ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рдЖрдзрд╛рд░ рд╕реВрдЪрдХрд╛рдВрдХ (EBP/RBP) рдЬреЛ рдкрд┐рдЫрд▓реЗ рдХрд╛рд░реНрдп рдореЗрдВ рд▓реМрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВ, рд╕реНрдЯреИрдХ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдЙрдиреНрд╣реЗрдВ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХреЗрдЧрд╛ред

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

рдЗрд╕рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдп рд╣реИрдВ: strcpy, strcat, sprintf, gets... рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, fgets, read & memcpy рдЬреИрд╕реЗ рдХрд╛рд░реНрдп рдЬреЛ рд▓рдВрдмрд╛рдИ рддрд░реНрдХ рд▓реЗрддреЗ рд╣реИрдВ, рдпрджрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд▓рдВрдмрд╛рдИ рдЖрд╡рдВрдЯрд┐рдд рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ рддреЛ рдХрдордЬреЛрд░ рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрдордЬреЛрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:

void vulnerable() {
char buffer[128];
printf("Enter some text: ");
gets(buffer); // This is where the vulnerability lies
printf("You entered: %s\n", buffer);
}

Stack Overflows рдХреЗ рдСрдлрд╕реЗрдЯреНрд╕ рдЦреЛрдЬрдирд╛

Stack overflows рдЦреЛрдЬрдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХрд╛ As рдХрд╛ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдЗрдирдкреБрдЯ рджреЗрдирд╛ рд╣реИ (рдЬреИрд╕реЗ python3 -c 'print("A"*1000)') рдФрд░ рдПрдХ Segmentation Fault рдХреА рдЙрдореНрдореАрдж рдХрд░рдирд╛ рдЬреЛ рдпрд╣ рд╕рдВрдХреЗрдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкрддрд╛ 0x41414141 рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЧрдИ рдереАред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ Stack Overflow рдХреА рдХрдордЬреЛрд░реА рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдХрд┐ рд░рд┐рдЯрд░реНрди рдПрдбреНрд░реЗрд╕ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдирд╛ рдСрдлрд╕реЗрдЯ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдорддреМрд░ рдкрд░ рдПрдХ De Bruijn рдЕрдиреБрдХреНрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреЛ рдПрдХ рджрд┐рдП рдЧрдП рд╡рд░реНрдгрдорд╛рд▓рд╛ рдХреЗ рдЖрдХрд╛рд░ k рдФрд░ рд▓рдВрдмрд╛рдИ n рдХреЗ рдЙрдк рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрдХреНрд░реАрдп рдЕрдиреБрдХреНрд░рдо рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд▓рдВрдмрд╛рдИ _n_** рдХреЗ рд╣рд░ рд╕рдВрднрд╡ рдЙрдк рдЕрдиреБрдХреНрд░рдо** рдареАрдХ рдПрдХ рдмрд╛рд░** рдПрдХ рд╕рдиреНрдирд┐рдХрдЯ рдЙрдк рдЕрдиреБрдХреНрд░рдо рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИред

рдЗрд╕ рддрд░рд╣, EIP рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдСрдлрд╕реЗрдЯ рдХреЛ рд╣рд╛рде рд╕реЗ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЗрди рдЕрдиреБрдХреНрд░рдореЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдкреИрдбрд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдФрд░ рдлрд┐рд░ рдЙрди рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдСрдлрд╕реЗрдЯ рдвреВрдВрдврдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдиреЗ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╣реИрдВред

рдЗрд╕рдХреЗ рд▓рд┐рдП pwntools рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ:

from pwn import *

# Generate a De Bruijn sequence of length 1000 with an alphabet size of 256 (byte values)
pattern = cyclic(1000)

# This is an example value that you'd have found in the EIP/IP register upon crash
eip_value = p32(0x6161616c)
offset = cyclic_find(eip_value)  # Finds the offset of the sequence in the De Bruijn pattern
print(f"The offset is: {offset}")

рдпрд╛ GEF:

#Patterns
pattern create 200 #Generate length 200 pattern
pattern search "avaaawaa" #Search for the offset of that substring
pattern search $rsp #Search the offset given the content of $rsp

рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛрдЬрд╝ рдХрд╛ рд╢реЛрд╖рдг

рдПрдХ рдУрд╡рд░рдлреНрд▓реЛ рдХреЗ рджреМрд░рд╛рди (рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рдУрд╡рд░рдлреНрд▓реЛ рдХрд╛ рдЖрдХрд╛рд░ рдкрд░реНрдпрд╛рдкреНрдд рдмрдбрд╝рд╛ рд╣реИ) рдЖрдк рд╕реНрдЯреИрдХ рдХреЗ рдЕрдВрджрд░ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЗ рдорд╛рдиреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ рдЬрдм рддрдХ рдХрд┐ рд╕рд╣реЗрдЬреЗ рдЧрдП EBP/RBP рдФрд░ EIP/RIP (рдпрд╛ рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ) рддрдХ рдирд╣реАрдВ рдкрд╣реБрдБрдЪ рдЬрд╛рддреЗред
рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рднреЗрджреНрдпрддрд╛ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХрд╛ рд░рд┐рдЯрд░реНрди рдкрддреЗ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рд╣реИ рддрд╛рдХрд┐ рдЬрдм рдлрд╝рдВрдХреНрд╢рди рд╕рдорд╛рдкреНрдд рд╣реЛ, рддреЛ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рдЙрд╕ рдкрддреЗ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдиреНрдп рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдХреЗрд╡рд▓ рд╕реНрдЯреИрдХ рдореЗрдВ рдХреБрдЫ рдЪрд░ рдХреЗ рдорд╛рдиреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рдирд╛ рд╢реЛрд╖рдг рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЬреИрд╕реЗ рдЖрд╕рд╛рди CTF рдЪреБрдиреМрддрд┐рдпреЛрдВ рдореЗрдВ)ред

Ret2win

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

{% content-ref url="ret2win/" %} ret2win {% endcontent-ref %}

рд╕реНрдЯреИрдХ рд╢реЗрд▓рдХреЛрдб

рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рд╣рдорд▓рд╛рд╡рд░ рд╕реНрдЯреИрдХ рдореЗрдВ рдПрдХ рд╢реЗрд▓рдХреЛрдб рд░рдЦ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдирд┐рдпрдВрддреНрд░рд┐рдд EIP/RIP рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╢реЗрд▓рдХреЛрдб рдкрд░ рдХреВрдж рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдордирдЪрд╛рд╣рд╛ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ:

{% content-ref url="stack-shellcode/" %} stack-shellcode {% endcontent-ref %}

ROP & Ret2... рддрдХрдиреАрдХреЗрдВ

рдпрд╣ рддрдХрдиреАрдХ рдкрд┐рдЫрд▓реЗ рддрдХрдиреАрдХ рдХреЗ рдореБрдЦреНрдп рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореМрд▓рд┐рдХ рдврд╛рдВрдЪрд╛ рд╣реИ: рдиреЛ рдПрдХреНрд╕реАрдХреНрдпреВрдЯреЗрдмрд▓ рд╕реНрдЯреИрдХ (NX)ред рдФрд░ рдпрд╣ рдХрдИ рдЕрдиреНрдп рддрдХрдиреАрдХреЛрдВ (ret2lib, ret2syscall...) рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдЬреЛ рдмрд╛рдЗрдирд░реА рдореЗрдВ рдореМрдЬреВрджрд╛ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдХреЗ рдордирдЪрд╛рд╣реЗ рдЖрджреЗрд╢ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВрдЧреА:

{% content-ref url="../rop-return-oriented-programing/" %} rop-return-oriented-programing {% endcontent-ref %}

рд╣реАрдк рдУрд╡рд░рдлреНрд▓реЛрдЬрд╝

рдПрдХ рдУрд╡рд░рдлреНрд▓реЛ рд╣рдореЗрд╢рд╛ рд╕реНрдЯреИрдХ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдпрд╣ рд╣реАрдк рдореЗрдВ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

{% content-ref url="../libc-heap/heap-overflow.md" %} heap-overflow.md {% endcontent-ref %}

рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдкреНрд░рдХрд╛рд░

рднреЗрджреНрдпрддрд╛рдУрдВ рдХреЗ рд╢реЛрд╖рдг рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╕реБрд░рдХреНрд╖рд╛ рдЙрдкрд╛рдп рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рджреЗрдЦреЗрдВ:

{% content-ref url="../common-binary-protections-and-bypasses/" %} common-binary-protections-and-bypasses {% endcontent-ref %}

{% hint style="success" %} рд╕реАрдЦреЗрдВ рдФрд░ AWS рд╣реИрдХрд┐рдВрдЧ рдХрд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ:HackTricks Training AWS Red Team Expert (ARTE)
рд╕реАрдЦреЗрдВ рдФрд░ GCP рд╣реИрдХрд┐рдВрдЧ рдХрд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ
{% endhint %}