Ei gyldig proxyadresse gjer ikkje ei handskriven SOCKS-melding gyldig. Å senda ein C- eller C++-struct kan senda utfylling eller heiltal i vertsrekkjefølgje som protokollen aldri bad om.

For ein SOCKS5 CONNECT-førespurnad med domenenamn, serialiser denne sekvensen eksplisitt etter metodeforhandling og eventuell vald autentisering:

  1. Versjon, kommando, reservert byte og adressetype
  2. Domenelengd og domenebyte
  3. Den to-byte destinasjonsporten i nettverksbyte-rekkjefølgje

Adresselengder er avhengige av SOCKS-versjonen og adressetypen. Numeriske felt med fast breidd treng den angjevne framstillinga si; domenestrengar har si eiga lengdekoding. Ein C-strengterminator er ikkje ei generell oppskrift på å leggja til ein null i trådmeldinga.

Snarveg i implementasjonenProblem å kontrollera
Tilordna ein 32-bits verdi gjennom ein 8-bits peikarHan sender ikkje ut alle fire byta
Kasta ein buffer til ein peikar til eit større heiltalJustering og byte-rekkjefølgje må framleis handsamast
Anta at éi lesing eller skriving er éi meldingTCP kan berre overføra ein del av protokollsekvensen

Samanlikn kvart felt med den tiltenkte destinasjonen og handsam delvis I/O. Å ta imot to byte beviser ikkje at heile svaret er kome. Ved å undersøkja desse grensene kan ein skilja ein feilaktig førespurnad frå ein tenar som avviser ei korrekt skildra tilkopling.

Relaterte artiklar