Неліктен C құрылымы нашар SOCKS сұранысын тудыруы мүмкін
Компилятор орналасуын сым форматы деп санаудың орнына өрістердің нақты енін, байт ретін және ағындық I/O-ны тексеріңіз.
Жарамды прокси мекенжайы қолмен жазылған SOCKS хабарламасын жарамды етпейді. C немесе C++ құрылымын жіберу протокол ешқашан сұрамаған толтыруды немесе хост ретімен бүтін сандарды жіберуі мүмкін.
SOCKS5 домен атауы бар CONNECT сұранысы үшін әдіс келіссөзінен және таңдалған кез келген аутентификациядан кейін осы ретті анық сериализациялаңыз:
- Нұсқа, команда, қорғалған байт және мекенжай түрі
- Домен ұзындығы және домен байттары
- Желілік байт ретіндегі екі байттық межелі порт
Мекенжай ұзындықтары SOCKS нұсқасына және мекенжай түріне байланысты. Тұрақты ені бар сандық өрістер өздерінің белгіленген көрінісін қажет етеді; домен жолдарының өз ұзындық кодтауы бар. C жолының аяқтаушысы сым хабарламасына нөл қосудың жалпы нұсқауы емес.
| Іске асырудағы қысқа жол | Тексерілетін мәселе |
|---|---|
| 32-биттік мәнді 8-биттік көрсеткіш арқылы меншіктеу | Ол төрт байттың бәрін шығармайды |
| Буферді үлкенірек бүтін сан көрсеткішіне түрлендіру | Туралау мен байт ретін әлі де өңдеу керек |
| Бір оқу немесе жазу бір хабарлама деп болжау | TCP протокол тізбегінің тек бір бөлігін жеткізе алады |
Әр өрісті көзделген межеге салыстырыңыз және ішінара I/O-ны өңдеңіз. Екі байтты алу жауаптың толық келгенін дәлелдемейді. Осы шекараларды тексеру бүлінген сұранысты дұрыс сипатталған қосылымнан бас тартатын серверден ажыратуы мүмкін.