*** leak2 ***

V tomto pripade ma program sice zjavnu zranitelnost vo forme buffer overflowu (prepiseme
premennu na zasobniku) pri volani scanf()... akurat miesto, do ktoreho sa data nacitavaju,
nie je na zasobniku. Ano, mozeme program efektivne zhodit; ale nezda sa, ze by sme mali
nejaku navratovu adresu, ktoru by sme mohli vyuzit na jeho kompletne ovladnutie.

Mozeme vsak prepisat data, ktore su za tym nacitavanym bufferom -- a tam je akysi pointer.
Pointer, ktory ukazuje na data, ktore neskor budu vo volani printf() vypisane. Ak by sme
ho nasmerovali na vhodne miesto, dokazeme precitat nieco zaujimave z pamate; napriklad
heslo :-)

$ objdump -t leak2 | grep heslo
0804a100 g     O .bss   00000065              heslo

Zvysok je potom uz priamociary:

$ perl -e 'print "a"x100, pack "L", 0x0804a100' | ./leak2
Ake je vase meno?
Vitajte VelmiZloziteATajneHeslo

Namety na zamyslenie:
- Hodnota 0x804a100 je reprezentovana ako bajty 0x00, 0xa1, 0x04, 0x08 a C-ckove retazce 
  su ukoncene nulou. To ale znamena, ze tie posledne tri nase bajty (0xa1, 0x04, 0x08) sa
  vlastne ani k slovu nedostanu! PRECO to teda funguje?!
- Vdaka tomuto konstruktu by sme mali dokonca vediet postupne po castiach precitat (takme)
  cely program, nie len jeden zaujimavy retazec.
