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.