====xxd===== Za pregled i uređivanje binarnog zapisa datoteke koriste se //hex editori//. Jedan od takvih hex editora koji često dolazi predinstaliran na Linux distribucijama je **xxd**. __**PRIMJER**__ - **Zadatak s Hacknite platforme - Bitflip** Marija odjednom ne može više pokrenuti njen vrlo bitan Linux program. Možeš li ga popraviti? Flag je u formatu CTF2023[brojevi]. Uz zadatak je priložena i datoteka *orc*. Kada je pokušamo pokrenuti dobijemo grešku: bash: ./orc: cannot execute binary file: Exec format error To upućuje na to da format izvršne datoteke nije validan. Proučimo //hexdump// datoteke, tako da pokrenemo naredbu xxd orc > orc.hexdump. Ta naredba radi //hexdump// datoteke //orc// i sprema ga u datoteku //orc.hexdump//. Hexdump zatim možemo otvoriti u text editoru kao što je //nano//. {{nano_hexdump.png}} Iz opisa znamo da se radi o Linux programu. Linux programi su datoteke u ELF formatu. Potrebno je istražiti ELF format i saznati koji bajt što znači. Iako Wikipedija nije uvijek najpouzdaniji izvor informacija, u ovom slučaju [[https://en.wikipedia.org/wiki/Executable_and_Linkable_Format|članak o ELF formatu]] na engleskoj Wikipediji pruža najjednostavniji pregled formata koji smo uspjeli pronaći. Proučavajući svaki bajt u hexdumpu, dolazimo do bajta na offsetu 0x12 koji označava procesorsku arhitekturu za koju je program napravljen. Trenutno je on postavljen na vrijednost "FF". {{nano_hexdump_highlighted.png}} Ako proučimo tablicu u članku na Wikipediji, vidjet ćemo da ta vrijednost ne označava nijednu validnu arhitekturu. Budući da većina osobnih računala koriste "AMD x86-64" arhitekturu, možemo pretpostaviti da je to arhitektura koja je korištena. Iz tablice možemo iščitati da onda taj bajt mora biti postavljen na vrijednost 3E. Nakon što promijenimo tu vrijednost možemo spremiti datoteku. Kako bi pretvorili popravljeni hexdump natrag u datoteku izvršimo naredbu: xxd -r orc.hexdump > fixed_orc Ako sad pokrenemo program //fixed_orc// dobit ćemo flag. {{xxd_flag.png}} ==Izvori== [1] https://linux.die.net/man/1/xxd