This is an old revision of the document!
Pentru parcurgerea demo-urilor, folosiți arhiva aferentă.
1-setuid/
.setuid-test.c
.make
.ls -l
pentru a obține informații complete despre executabilul setuid-test
.root
și că are bitul de set-user-ID activat../setuid-test
root
) (temporary privilege drop).2-shellcode/
.shellcode-samples.c
.binary-shellcodes
.objdump
pentru a dezasambla fișierul:objdump -D -b binary -mi386 binary-shellcodes
nop
între cele trei shellcode-uri.int $0x80
, reprezentând trap pentru acces în kernel space (apel de sistem).shellcode_write
realizează un apel write
, iar shellcode-urile din variabilele shellcode_exec
, respectiv shellcode_exec_sh
deschid o sesiune de shell.make
../shellcode-samples
main
, variabila shellcode_exec
cu shellcode_exec_sh
și, respectiv, shellcode_write
, recompilați si rulați, din nou, fișierul obținut.3-exploit/
.exploit.c
.main
din cadrul parametrului argv[1]
.make
.-fno-stack-protector
) și reactivează execuția de cod de pe stivă (-z execstack
).run-exploit.sh
.a
și adresa de start a bufferului.main
. Când funcția main
se încheie se face jump pe stivă și se execută shellcode-ul../run-exploit.sh
și observați deschiderea unui nou shell.
4-stack-smash/
.stack-smash.c
.memcpy
cu un șir de dimensiune mai mare, ajungând să producă un stack buffer overflow cu riscul de suprascriere a adresei de retur a funcției main.make
pentru a compila două executabile:stack-smash-no-protector
: fără suport de stack smashing;stack-smash-protector
: cu suport de stack smashing../stack-smash-no-protector ./stack-smash-protector
TEST_STRING
.