http
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
http [2023/09/28 10:55] – katarina | http [2023/11/27 10:23] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====HTTP==== | + | ====HTTP==== |
- | **HTTP (Hypertext transfer protocol)** | + | **HTTP (//Hypertext transfer protocol//)** |
- | ====HTTP zahtjev==== | + | Važniji dijelovi |
- | **HTTP zahtjev** je poruka koju web preglednik šalje nekom poslužitelju kako bi dohvatio | + | |
- | Među najvažnijim informacijama i djelovima HTTP zahtjeva, koji svaki HTTP zahtjev sadrži su: HTTP verzija, HTTP metoda, HTTP zaglavlja (eng. headers), tijelo zahtjeva i URL resursa (npr. slike, teksta, web forme i slično) kojem se želi pristupiti. | ||
- | + | ===HTTP metode=== | |
- | ====HTTP metode==== | + | |
Unutar svakog HTTP zahtjeva koristi se neka HTTP metoda kojom je definirano koju akciju treba izvesti nad određenim resursom. Najvažnije i najčešće korištene metode su **GET**, **POST**, **PUT**, **DELETE** i **HEAD**. | Unutar svakog HTTP zahtjeva koristi se neka HTTP metoda kojom je definirano koju akciju treba izvesti nad određenim resursom. Najvažnije i najčešće korištene metode su **GET**, **POST**, **PUT**, **DELETE** i **HEAD**. | ||
- | **HEAD** metoda dohvaća samo zaglavlja (eng. headers) odgovora u kojima su sadržani metapodatci o resursu, npr. veličina resursa i dostupnost resursa na poslužitelju. Ova metoda | + | **GET** metodom dohvaća se sadržaj željenog resursa (npr. GET / |
+ | |||
+ | **POST** metoda služi za izmjenu i slanje podataka poslužitelju. U pravilu tip podataka koji se šalju mora biti unaprijed definiran u zaglavlju da bi ih preglednik znao ispravno interpretirati. Važno je da informacije u tijelu semantički odgovaraju resursu koji treba stvoriti ili promijeniti. Primjerice, ako u bazu želimo pohraniti ime, prezime i ID, tijelo zahtjeva može izgledati ovako: ime=ivica& | ||
+ | |||
+ | **PUT** metodom se zahtijeva izmjena ili stvaranje određenog resursa. Za razliku od POST metode, PUT je // | ||
+ | |||
+ | **DELETE** metodom zahtijeva se brisanje određenog resursa na poslužitelju. | ||
+ | |||
+ | **HEAD** metoda dohvaća samo zaglavlja (eng. //headers//) odgovora u kojima su sadržani metapodatci o resursu, npr. veličina resursa i dostupnost resursa na poslužitelju. Ova metoda koristi | ||
+ | |||
+ | |||
+ | __PRIMJER__ - **Demonstracija HTTP metoda alatom curl**\\ | ||
+ | Na terminalu na Linuxu ili iz Command prompta na Windowsu pokrećemo redom: | ||
+ | |||
+ | |||
+ | < | ||
+ | |||
+ | Ova naredba dohvaća samo zaglavlja HTTP odgovora s navedene stranice. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | < | ||
+ | |||
+ | Ova naredba dohvaća cijelu navedenu stranicu. Za izvršavanje GET metode nisu potrebne nikakve opcije jer curl standardno koristi GET metodu. U rezultatu primjećujemo da se dohvatio HTML tražene web stranice (prikazan je samo dio rezultata). | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | __PRIMJER__ - **Zadatak s Hacknite platforme - e-Trgovina " | ||
+ | < | ||
+ | Lokalna trgovina je odlučila napraviti svoju web stranicu na kojoj kupci mogu pratiti svoju povijest | ||
+ | kupovine. Korisnici se mogu sami registrirati na tu stranicu, i pri svakoj fizičkoj kupnji u trgovini | ||
+ | mogu dati svoje korisničko ime kako bi se njihova povijest kupovine unijela u bazu podatka. Stranica bi | ||
+ | mogla biti korisna svim sadašnjim i budućim kupcima trgovine! | ||
+ | |||
+ | Flag je u formatu CTF2021[brojevi] | ||
+ | |||
+ | http:// | ||
+ | |||
+ | </ | ||
+ | |||
+ | Na poveznici se nalazi početna stranica. Odaberimo stranicu za registraciju. Registrirati se možemo uobičajeno preko obrasca, ali i s pomoću //curla//. Dohvatimo prvo sadržaj stranice da bismo otkrili imena parametara koji se šalju poslužitelju. Upišimo u terminal naredbu za dohvat stranice za registraciju: | ||
+ | |||
+ | < | ||
+ | |||
+ | Pronađimo dio koda koji definira obrazac: | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Vidimo da se traženi parametri zovu // | ||
+ | |||
+ | < | ||
+ | </ | ||
+ | |||
+ | |||
+ | Izvršavanjem ove naredbe od stranice se dobiva HTML odgovor na kojem se vidi potvrda da je registracija uspješno obavljena. | ||
+ | |||
+ | {{ :: | ||
+ | |||
+ | Sada se podatci korišteni u curl naredbi mogu iskoristiti za prijavu na stranici. | ||
+ | |||
+ | {{ :: | ||
+ | |||
+ | Primijetimo da ako upišemo podatak koji nije validan (prekratka lozinka), odgovor će dojaviti grešku: | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | ===HTTP zaglavlja=== | ||
+ | **HTTP zaglavlja (eng. headers)** sadržavaju dodatne informacije i metapodatke HTTP zahtjeva i odgovora. Jedno HTTP zaglavlje sastoji se od imena zaglavlja, dvotočke i vrijednosti zaglavlja, npr. // | ||
+ | **Zaglavljima zahtjeva** mogu se poslati dodatne informacije uz zahtjev kako bi server prikladno odgovorio, kao što su željeni format odgovora (npr. JSON) ili dodatne informacije o klijentu koji stvara zahtjev (// | ||
+ | **Zaglavlja odgovora** sadržavaju dodatne informacije o odgovoru, primjerice je li odgovor dohvaćen iz predmemorije (engl. //cache//) ili koji software koristi poslužitelj s kojeg je poslan odgovor. | ||
+ | |||
+ | Neki tipovi zaglavlja: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | |||
+ | ===HTTP kolačići=== | ||
+ | **HTTP kolačići** (eng. // | ||
+ | |||
+ | Jedna od glavnih primjena HTTP kolačića je autentifikacija. Nakon što se korisnik autentificira na web sjedište, poslužitelj pošalje autentifikacijski kolačić pregledniku. Taj autentifikacijski kolačić se u pravilu šalje u svakom narednom HTTP zahtjevu dok se korisnik ne odjavi, što omogućava poslužitelju da provjeri koji korisnik je napravio zahtjev bez da korisnik mora uvijek iznova napraviti zahtjev. | ||
+ | |||
+ | __PRIMJER__ **Zadatak s Hacknite platforme - Admin naručivanje**\\ | ||
+ | < | ||
+ | Eko trgovina je uključila mogućnost naručivanja proizvoda preko svoje stranice. Svi posjetitelji mogu | ||
+ | bez ikakvog problema naručiti bilo koji proizvod kojeg trgovina nudi. Naravno, vjerni korisnici imaju | ||
+ | mogućnost i naprednog naručivanja. No potrebno je prijaviti se. Na prvi pogled, stranica nema forme za prijavu. | ||
+ | |||
+ | Flag je u formatu CTF2022[brojevi] | ||
+ | http:// | ||
+ | </ | ||
+ | |||
+ | Odlaskom na stranicu zadatka i odabirom stranice za naručivanje u izborniku vidi se sljedeća poruka: | ||
+ | {{ :: | ||
+ | |||
+ | Otvaranjem zadatka u Firefox browseru koji koristi [[burp|Burp suiteov]] proxy i uključivanjem presretanja zahtjeva možemo presresti HTTPS komunikaciju sa stranice zadatka. Odlaskom na stranicu označenom „Naručivanje” u izborniku, u Burp suiteu se vidi presretnuti zahtjev: | ||
+ | |||
+ | {{ : | ||
- | **GET** metodom se dohvaća uzorak | + | Može se vidjeti kolačić s nazivom „napredno” i vrijednošću „0”. Promjenom vrijednosti tog kolačića na 1 i prosljeđivanjem zahtjeva dobiva |
- | ** | + | |
- | POST** metoda služi za izmjenu ili stvaranje podataka na poslužitelju. Unutar tijela zahtjeva, sadržane su informacije pomoću kojih se stvaraju ili mijenjaju traženi resursi. Važno je da informacije u tijelu semantički odgovaraju resursu kojeg treba stvoriti ili promijeniti (npr. tijelo zahtjeva: ime=ivica& | + | |
- | **DELETE** metodom se zahtjeva brisanje određenog resursa na poslužitelju. | ||
- | **PUT** metodom se zahtjeva izmjena ili stvaranje određenog resursa. Za razliku od POST metode,PUT metoda je idempotentna. Zvanjem iste PUT metode više puta za redom nakon prve promjene, naknadni zahtjevi PUT metode neće vršiti izmjene, dok slanjem više POST zahtjeva za redom, izmjene mogu biti izvršene svaki puta, npr. dodavanje istog komenara više puta. | ||
+ | ===Izvori=== | ||
+ | [1]https:// | ||
+ | [2]https:// | ||
+ | [3]https:// | ||
+ | [4]https:// | ||
- | __PRIMJER__ **Demonstracija HTTP metoda alatom [[curl|Curl]]** |
http.1695898512.txt.gz · Last modified: 2025/06/03 10:22 (external edit)