Většina informací potřebných pro řešení této úlohy zazněla na přednášce. Dále se vám může hodit vědět následující:
nm.
as –32, či gcc -m32 source.s (gcc automaticky kompiluje přípony .s a .S pouze assemblerem).
objcopy můžete vykopírovat “holé” strojové instrukce z programu. Např. příkaz objcopy -O binary –only-section=.text –only-section=.rodata prog prog.bin vykopíruje z programu prog kód (.text) a read-only data (globální proměnné deklarované jako const).
objcopy) můžete příkazem objdump -D -b binary -m i386 prog.bin nebo ndisasm -b 32 prog.bin.
nc, wget nebo curl.
Tato úloha není povinná.
Vytvořte útok na tento webový server. Můžete si vybrat z několika různě složitých variant útoku:
/tmp/secret.txt – 5 bodů.
Do odevzdávacího systému nahrávejte archiv, který bude obsahovat
všechny vaše zdrojové soubory a spustitelný soubor exploit. Ten
bude spuštěn a jako parametr mu bude předáno URL webového serveru, na
který má zaútočit – např. ./exploit http://localhost:8080. V
případě 1. varianty zadání nebude na stdout vypsáno nic (pwned! se
vypíše na straně serveru), u 2. varianty se tam vypíše obsah souboru
/tmp/secret.txt. 3. variantu odevzdávací systém netestuje, počítá
se pouze změna obrázku na produkčním serveru. Soubor exploit může
být např. skript, který přeloží, co je potřeba, a spustí vlastní útok.