<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
**Stack shellcode** je tehnika korišćena u **binarnom eksploatisanju** gde napadač piše shellcode u stack ranjivog programa, a zatim modifikuje **Instruction Pointer (IP)** ili **Extended Instruction Pointer (EIP)** da pokazuje na lokaciju ovog shellcode-a, uzrokujući njegovo izvršavanje. Ovo je klasična metoda korišćena za sticanje neovlašćenog pristupa ili izvršavanje proizvoljnih komandi na ciljnom sistemu. Evo detaljnog objašnjenja procesa, uključujući jednostavan C primer i kako biste mogli napisati odgovarajući exploit koristeći Python sa **pwntools**.
*`-no-pie`: Onemogućava izvršavanje nezavisnog od položaja izvršnog fajla, olakšavajući predviđanje memorijske adrese gde će se nalaziti naš shell kod.
payload += b'A' * (offset - len(payload)) # Adjust the payload size to exactly fill the buffer and overwrite EIP
payload += p32(0xffffcfb4) # Supossing 0xffffcfb4 will be inside NOP slide
# Send the payload
p.sendline(payload)
p.interactive()
```
Ovaj skript konstruiše payload koji se sastoji od **NOP slide-a**, **shellcode-a**, a zatim prepisuje **EIP** sa adresom koja pokazuje na NOP slide, osiguravajući izvršenje shellcode-a.
**NOP slide** (`asm('nop')`) se koristi kako bi se povećala šansa da izvršavanje "klizi" u naš shellcode bez obzira na tačnu adresu. Prilagodite argument `p32()` početnoj adresi vašeg bafera plus offset kako biste dospele do NOP slide-a.
* [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **treba da bude onemogućen** kako bi adresa bila pouzdana tokom izvršavanja ili adresa gde će funkcija biti smeštena neće uvek biti ista i trebalo bi da imate neki leak kako biste saznali gde je funkcija učitana.
* [**Stack Canaries**](../common-binary-protections-and-bypasses/stack-canaries/) takođe treba da budu onemogućeni ili kompromitovana povratna adresa EIP-a neće biti praćena.
* [**NX**](../common-binary-protections-and-bypasses/no-exec-nx.md) zaštita **stack-a** bi sprečila izvršavanje shellcode-a unutar stack-a jer ta regija neće biti izvršiva.
* 32-bit, ASLR sa leak-om adrese stack-a, upoređivanje za sprečavanje poziva exit(), prepisivanje promenljive sa vrednošću, pisanje shellcode-a i skakanje na njega