Satanic Socks Server DoS exploit Кто скажет в чем бага ? P.S. http://www.ibbs.ru/ftpdrmist/sources/sss.c сервер
Бага в gethostbyname. Или переполнение буфера здесь: char* _ConnectStruct; int From; int To; char Buff[BUFF_SIZE]; char* Error;
Это гусю, все остальные не считаются, Ваши ответы не могут быть приняты или не принты, т.к. они не содержат полезной информации =Р
НЕТ! Кто победит получит от всех участников репутации, а кто не выставит из учавствующих репутацию победителю получит минус =)
while(buff_size > 0) { bytes = send(s, Buff, buff_size, 0); или while(buff_size > 0) { bytes = recv(s, Buff, buff_size, 0); больше не знаю=)
Чего ты не знаешь? Что ты сюда код бросил? я тебя в чем уязвимостьс пррашиваю =) Ненадо сюда код бросать и говорить вот там уязвимость :d Это нечестно неинтересно и не засчитывается =)
оки..думаю что ошибка в том что функция while зацикливается из-за этого получается переполнене и происходит падение
Решил глянуть над чемже парится весь ачат,и почему это должны сделать только тоха протеус и грейт - увидел код на си и разочаровался.Ну чтож глянем внутрь Code: if(!connect_to_sss(&s, argv[1], atoi(argv[2]))){ statfinish(FALSE); return 0; } statfinish(TRUE); statadd("Exploiting the target"); sss_exploit_packet(s)l Кусок,отвечающий за коннект и посылку эксплоита,дальше поидее мы по спецификации протокола SOCKS отправить специально сформированный пакет с айпи и портом куда мы собствено захотим законекиться Аналог на дельфи для пятых носков Code: FProxyBuf:=FProxyBuf+ char(FHostAddr.sin_addr.S_addr)+char(FHostAddr.sin_addr.S_addr shr 8)+ char(FHostAddr.sin_addr.S_addr shr 16)+char(FHostAddr.sin_addr.S_addr shr 24)+#0; Смотрим код сервера,после того как к нам законектились мы создаем поток вызовом AcceptThread(int s),далее вызывается Socks5GetCmd , в котором мы передаем айпи.Ага,смотрим char ip[4] это я так понимаю ограничитель?Значит задохлик посылает пакет с айпишником больше заданной длины,тем самым вызывая стринг буффер оверлоу.Так,да? /* какая же гадость эта ваша си */
Странно, что в шеллкоде 4ый байт - 0x05 (AddrType), а в коде сервера в Socks5GetCmd() в switch'e для AddrType прописаны случаи только на 0x01..0x04... Дальше хендшейк должен сорваться 2гема Code: if(!sread(s, ip, 4)) По ходу он полюбому читает тока 4 байта, так что даже если послать больше ничего не выйдет... Не ругаццо, если что) Си уже совсем не помню =\
Никто не подкрался к истине! Думаем, товарищи, стыдно! =d P.S. В теме отметился гема =) Значит у победителя сильно прибавится репутации
C в топку, Delphi в топку, Ассемблер рулит А если серьёзно, то ты вроде запретил сокету разрывать соединение(SO_LINGER), пока не получина вся переданная информация, сам то передаёшь только заголовок, сервер отвечает, и переходит в режим ожидания и будет ждать пока соединение не оборвётся, так как таймаута нам не придусмотрено. Смущает только одно, ведь если ты выключишь свой комп, соединение ведь придётся закрыть, разьве нет?