ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 20.07.2007, 10:21
KEZ
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме:
1941233

Репутация: 2726


По умолчанию

в MAC OS насколько я понимаю критично sizeof( sockaddr ) != sizeof( sockaddr_in )

> Я пробовал не очищать, оно ругается.
ругается? всю жизнь не ругалось)

s_a.sin_family = AF_INET;
s_a.sin_port = htons( 80 );
s_a.sin_addr.s_addr = inet_addr( ip );

вот и все что нужно, всегда так делал... s_a в стеке, там был мусор.
 
Ответить с цитированием

  #12  
Старый 20.07.2007, 11:46
ZaCo
Banned
Регистрация: 20.06.2005
Сообщений: 880
Провел на форуме:
4610226

Репутация: 1332


По умолчанию

Цитата:
Код:
	do
	{
		int i=recv(sSock,cTemp,iSize,0);
		if(i<1)
			return iResult;
		iResult+=i;
		cTemp+=i;
		iSize-=i;
	}
	while(strncmp(cBuf+iResult-4,"\r\n\r\n",4));
Переполнение буфера.
переполнение буфера всегда лечится, а вот неправильную логику подпрограммы исправлять обычно сложнее: кто сказал что браузер пошлет запрос оканчивающийся сразу на \r\n\r\n, тут и про пост-запросы сразу забываем с таким парсингом. наверное придется проверять пост-ли это, если да, тогда смотрим поле Content-Length и продолжаем читать после \r\n\r\n ровно такое количество данных.
и strstr тем же смотри у всего cBuf наличие \r\n\r\n, а не strncmp, так как данные могу поступать как угодно.
2KEZ ну и наверняка без наличия "Host: " будет идти чтение с не зарезервированного участка памяти, что к ошибке рантайм должно привести.
 
Ответить с цитированием

  #13  
Старый 20.07.2007, 11:53
NetMan
Участник форума
Регистрация: 09.02.2004
Сообщений: 122
Провел на форуме:
1089794

Репутация: 134
По умолчанию

Цитата:
Сообщение от KEZ  
ага, спрашивается зачем использовать strncpy, если указывается длинна переданой строки
с HOST_SIZE+1 начанается переполнение стека и возможность выполнить произвольный код...
Как защититься от переполнения?
 
Ответить с цитированием

  #14  
Старый 20.07.2007, 12:43
Ni0x
Постоянный
Регистрация: 27.08.2006
Сообщений: 367
Провел на форуме:
2009677

Репутация: 472
По умолчанию

NetMan, у стандартных функций типа strcpy есть безопасные аналоги, которые позволяют ограничивать размер, таже strncpy, другое дело, что ТС не правильно ее использует.
 
Ответить с цитированием

  #15  
Старый 20.07.2007, 16:43
da_ff
Участник форума
Регистрация: 11.07.2006
Сообщений: 125
Провел на форуме:
413927

Репутация: 71
Отправить сообщение для da_ff с помощью ICQ
По умолчанию

Большое спасибо за коментарии, критику учту, хотя во многих постах чуствовалаль почемута некоторая агрессия, это все таки "первый блин". По поводу работоспособности я с ним пару часов серфил на опере, не скажу что было очень стабильно но работало. по поводу /r/n/r/n это в процессе написания была некоторая проблема из- за чего применялась такая конструкция для отладки потом ее исправил но видимо выложил не исправленную версию.
а по поводу замены констант ну это просто облегчает читаемость все равно же в ехе будет число на этом месте.

>> if((saddr.sin_addr.s_addr=inet_addr("cHost"))==INA DDR_NONE)
>>Ой это вообще без комментариев. Это не работает 100%. Что называется "полный П"
причем тут пхп просто кавычки забыл убрать и все

>>saddr.sin_addr.s_addr=htonl(INADDR_ANY);

да действительно херня получилась...

Последний раз редактировалось da_ff; 20.07.2007 в 16:49..
 
Ответить с цитированием

  #16  
Старый 20.07.2007, 21:58
da_ff
Участник форума
Регистрация: 11.07.2006
Сообщений: 125
Провел на форуме:
413927

Репутация: 71
Отправить сообщение для da_ff с помощью ICQ
По умолчанию

если я еще не всех доеп (помоему здесь все какие то вспыльчивые) может кто нибудь посоветовать как проверить состояние сокета потому как если клиент отправил данные но не закрыл сокет ф-я reсvостанавливает выполнение программы. в гет-запросе проблем никаких достаточно найти /r/n/r/n а вот пост-запрос еще шлет длину запроса а вымерять ее как то не хочеться
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Sun Drake [GUI] : release slider Избранное 6 14.07.2007 00:43
XTCS Counter-Strike 1.6 Final Release (FULL VERSION -2006) GreenBear Болталка 12 20.02.2007 20:43
Microsoft Windows Vista RC1 (Release Candidate) build 5600 †Romi4† Soft - Windows 8 10.09.2006 14:54
GCC 4.1 Release Series w00d Мировые новости 0 25.05.2006 12:37
Уязвимости форума YaBB 1 Gold - Release и сплойты к нему asma2k Форумы 5 06.01.2006 02:00



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ