www.try2hack.nl


Несколько дней назад (13.06.02), какой-то кекс кинул мне на аську урл www.try2hack.nl, мол проверь свои силы. Признаюсь, каждое задание на этом сайте было по-своему сложное, но, в то же время, интересное. Всем, кто не проходил это тестирование, настойчиво рекомендую попробовать. Ну а те, кто уже попытал счастье и не дошёл до 10-го задания, читать эту статью =)
Ну что ж, приступим. Сразу скажу, что опишу решения тока к первым 9-ми заданиям, подробно буду останавливаться только на самых сложных и интересных.

#1.

Элементарно. Вот сурс на js проверки пароля:
<SCRIPT LANGUAGE="JavaScript">
function Try(passwd){
	if (passwd =="hackerzzz"){
		alert("Alright ! On to level 2 ...");
		location.href = "levvel2.html";
	}
	else {
		alert("The password is incorrect. Please Don't Try Again.");
		location.href = "http://www.disney.com";
	};
}
</SCRIPT>
В третьей строчке введённое значение сверяется со словом "hackerzzz", которое в данном случае играет роль пароля.

#2.

Признаюсь, на первый взгляд, задание показалось мне сложным. Я ошибся =)
Заливаим себе флэшку, открываем её блокнотом (можно hex-редактором) и в самом низу (адреса 00000440-00000490) видим:
txtUsername......Try2Hack.I....txtPassword......NokiaIsGood.I..........LLeVeLL3.html
Логин Try2Hack
Пароль NokiaIsGood
След. задание LLeVeLL3.html

#3.

Очень остроумное и интересное задание.
Вот исходник js'a:
<SCRIPT language="JavaScript">
pwd = prompt("Please enter the password for level 3 :","");
if (pwd==PASSWORD){
	alert("Alright !\nEntering Level 4 ...");
	location.href = CORRECTSITE;
}else
{
	alert("WRONG !\nBack to disneyland !!!");
	location.href = WRONGSITE;
}
PASSWORD="AbCdE";
CORRECTSITE="level4.html";
WRONGSITE="http://www.disney.com";
</SCRIPT>
Казалось бы, пароль "AbCdE", но как же он может работать, если он определяется в конце? Однако, переменная PASSWORD на момент проверки почему-то была уже определена, иначе интерпритатор выдал бы ошибку "PASSWORD: определение отсутствует". И только через 20 мин. раздумий, в глаза бросилась строчка:
<SCRIPT src="JavaScript"></SCRIPT>
Никак не мог подумать, что "JavaScript" это файл =))) В нём как раз и лежали истинные значения переменных:
PASSWORD = "TheCorrectAnswer";
CORRECTSITE = "thelevel4.html";
WRONGSITE = "http://www.disney.com";

#4.

Ковыряя апплет, внимание привлекли строки по адресу 00000A60-00000A80. Апплет читал строки из файла *level4* (в последствие дизасменный сурс это подтвердил). Скорее всего, это был файл паролей. Самое интересно, что он продолжал это делать с моего винта. То есть, файло *level4* было или в инете, или на моём компе. А если на моём, то где? Правильно, или в cookie, или в Temp'ах. Почистив и те, и другие, я зашёл на страницу с апплетом. В темпах появилось два файла, один из которых был level4[2].txt.
Содержимое:
5_level_5.html
Try2Hack
AppletsAreEasy
Кстать, внутри апплета для отвода глаз было вот что: "txtUsername=AlmostAHacker ..... txtPassword=ZqrE01A2d" Хитрооо =)
/* Gr33tz 2 godson */

#5.

Предлагается скачать файло level5.exe. В нём нужно ввести логин и пароль, которые очевидно хранились в самом файле. Открыв его hex'ом в глаза бросилось:
http://www.try2hack.f2s.com/login-level6.html..... txtUsername=AlmostAHacker ..... txtPassword=ZqrE01A2d
Адресa: 000019F0-00001A50.
Слишком легко, думал я. И правильно, пароли не подошли. Далее на помощь пришёл дизассемблер =):
Логин Try2Hack
Пароль OutOfInspiration
След. задание l-e-v-e-l-6.html
/* gr33tz 2 a3oX =) */

#6.

Очень запутанное задание. Опять же предлагается скачать программу, которая на твоих глазах подключается к серверу и проверяет твои введённые данные на валидность. На этот раз создатели честно предупреждают: "this is not level 5, you can't decompile this exe's".
На помощь пришёл сниффер SpyNet. Не буду описывать, как я чё делал (отдельная статья нужна), выложу лишь интересующий нас пакет:
0000:  44 45 53 54 00 00 20 53 52 43 00 00 08 00 45 00 DEST.. SRC....E.
0010:  02 40 5F 78 40 00 71 06 14 E0 D5 13 8C 02 C2 57 .@_x@.q........W
0020:  6F F2 00 50 04 AE EC 04 FD 8C 1A 9A 11 B0 50 10 o..P..........P.
0030:  40 7C AE D3 00 00 48 54 54 50 2F 31 2E 31 20 32 @|....HTTP/1.1 2
0040:  30 30 20 4F 4B 0D 0A 44 61 74 65 3A 20 53 75 6E 00 OK..Date: Sun
0050:  2C 20 31 34 20 41 70 72 20 32 30 30 32 20 31 38 , 14 Apr 2002 18
0060:  3A 32 32 3A 35 35 20 47 4D 54 0D 0A 53 65 72 76 :22:55 GMT..Serv
0070:  65 72 3A 20 41 70 61 63 68 65 0D 0A 43 61 63 68 er: Apache..Cach
0080:  65 2D 43 6F 6E 74 72 6F 6C 3A 20 6D 61 78 2D 61 e-Control: max-a
0090:  67 65 3D 36 30 34 38 30 30 0D 0A 45 78 70 69 72 ge=604800..Expir
00A0:  65 73 3A 20 53 75 6E 2C 20 32 31 20 41 70 72 20 es: Sun, 21 Apr 
00B0:  32 30 30 32 20 31 38 3A 32 32 3A 35 35 20 47 4D 2002 18:22:55 GM
00C0:  54 0D 0A 4C 61 73 74 2D 4D 6F 64 69 66 69 65 64 T..Last-Modified
00D0:  3A 20 57 65 64 2C 20 31 38 20 41 70 72 20 32 30 : Wed, 18 Apr 20
00E0:  30 31 20 31 35 3A 32 38 3A 30 30 20 47 4D 54 0D 01 15:28:00 GMT.
00F0:  0A 45 54 61 67 3A 20 22 30 2D 63 63 2D 33 61 64 .ETag: "0-cc-3ad
0100:  64 62 32 38 30 22 0D 0A 41 63 63 65 70 74 2D 52 db280"..Accept-R
0110:  61 6E 67 65 73 3A 20 62 79 74 65 73 0D 0A 43 6F anges: bytes..Co
0120:  6E 74 65 6E 74 2D 4C 65 6E 67 74 68 3A 20 32 30 ntent-Length: 20
0130:  34 0D 0A 4B 65 65 70 2D 41 6C 69 76 65 3A 20 74 4..Keep-Alive: t
0140:  69 6D 65 6F 75 74 3D 31 35 2C 20 6D 61 78 3D 31 imeout=15, max=1
0150:  30 30 0D 0A 43 6F 6E 6E 65 63 74 69 6F 6E 3A 20 00..Connection: 
0160:  4B 65 65 70 2D 41 6C 69 76 65 0D 0A 43 6F 6E 74 Keep-Alive..Cont
0170:  65 6E 74 2D 54 79 70 65 3A 20 74 65 78 74 2F 70 ent-Type: text/p
0180:  6C 61 69 6E 0D 0A 0D 0A 00 28 45 4E 43 52 59 50 lain.....(ENCRYP
0190:  54 49 4F 4E 20 54 59 50 45 29 0D 0A 42 2A 43 2A TION TYPE)..B*C*
01A0:  4E 2A 2A 4E 0D 0A 0D 0A 28 55 53 45 52 4E 41 4D N**N....(USERNAM
01B0:  45 29 0D 0A 61 62 61 62 61 20 61 62 62 61 62 20 E)..ababa abbab 
01C0:  62 61 61 61 61 20 61 61 61 62 62 0D 0A 0D 0A 28 baaaa aaabb....(
01D0:  50 41 53 53 57 4F 52 44 29 0D 0A 61 62 61 62 61 PASSWORD)..ababa
01E0:  20 61 61 61 61 61 20 61 62 62 61 61 20 61 62 62  aaaaa abbaa abb
01F0:  62 61 20 61 61 61 61 61 20 62 61 61 61 61 20 62 ba aaaaa baaaa b
0200:  61 61 62 61 20 62 61 62 62 61 0D 0A 0D 0A 28 50 aaba babba....(P
0210:  41 47 45 29 0D 0A 61 62 61 62 61 20 61 61 62 61 AGE)..ababa aaba
0220:  61 20 62 61 61 62 62 20 61 61 62 61 61 20 61 62 a baabb aabaa ab
0230:  61 62 61 20 62 61 61 61 62 20 61 61 62 61 61 20 aba baaab aabaa 
0240:  62 61 61 62 62 20 61 61 62 61 61 20 61 62       baabb aabaa ab
Немного обрезанный (вы попробуйте намано скопировать из SpyNet'a), но основная часть (пароль, логин, страница) видна хорошо. Казалось бы, дело сделано, ан нет. Все данные были зашифрованы :-/
(USERNAME)..ababa abbab baaaa aaabb....
(PASSWORD)..ababa aaaaa abbaa abbba aaaaa baaaa baaba babba....
Я взял JohnTheRipper'a и начал перебор...шутка =)) Это был алгоритм Бэкона. Совершенно элeментарный алгоритм, даже не шифрования, а кодирования:
aaaaa = a
aaaab = b
aaaba = c
aaabb = d
и т.п.
Результатом ручного декодирования было:
Логин LORD
Пас LANPARTY
Страница LEVELSEVEN.html
Учите информатику, дети =)
/* gr33tz 2 D4rkGr3y ;) */

#7.

Дан капризный перл скрипт level7.pl. Задание: заставить его поверить, что:
1) cтраница, с которой мы попали на сайт: http://www.microsoft.com/ms.htm
2) мы пользуемся браузером Microsoft Internet Explorer 6.72
3) операционная система UNIX/LINUX
Вообще задание лёгкое, нам нужно просто сгенерировать такой http запрос, в заголовке которого будет содержатся данная информация. То есть:
Referer: http://www.microsoft.com/ms.htm
User-agent: MSIE 6.72
А вот с осью маленькая проблема. В заголовке, поля, в котором явно указывается версия операционной системы, нет. Она обычно вытаскивается из User-agent. Понадеясь, что level7.pl делает именно так, я набросал перл скриптик, который послал вот такой запрос:
GET /cgi-bin/level7.pl HTTP/1.0
Referer: http://www.microsoft.com/ms.htm
User-Agent: MSIE 6.72 (UNIX/LINUX)
Accept: */*

И опаа =)
<A HREF="../Level-8.html">Level 8</A>

#8.

Сразу привлекло название обрабатывающего скрипта phf.cgi. Помнится, немало взломов было на его совести. Порыскав по баг-траку, нашёл сплойт:
/cgi-bin/phf.pp?Qalias=x%0a/bin/cat%20/etc/passwd
Ответ был:
BuiZe:Bu3kOx4cCMX2U
Пароль зашифрован обычным DES'ом. JTR'у понадобилось 15 мин., чтобы узнать pas. Какой, распространяться, пожалуй, не буду, кому надо - расшифруют =)

#9.

На странице с заданием красуется надпись:
New message for BuiZe :

Level 8 completed !
Go to irc.<*>.org and join #<*>
There type /msg <*> begin

Другими словами, поле боя переносится на ирк. Название сервера, канала и бота я скрыл по понятным (надеюсь всем) причинам.

#9.

состоит из множества мини-заданий.
Заходим к ним на канал #Try2Hack.
Пишем "/msg Try2Hack perfect-start"
ну и что же он нам выдаст? а вот что :
-TRY2HACK- Welcome to try2hack level 9! Decode the following lines to continue:
-TRY2HACK- Wbva #gel2unpx.yriry9. Gb trg gur xrl lbh arrq gb qrpbqr gur sbyybjvat yvar:
-TRY2HACK- GTI2MJj5YJ15DxVmERy1rQIZ=
-TRY2HACK- Tbbq yhpx, naq frr lbh ba #gel2unpx.yriry9.
разшифруйте сами ... слабо? ну тогда я вас мучить не буду лезь:
http://www.degraeve.com/cgi-bin/rot13.cgi
вот мы и разшифровали и что же у нас получилось:
Join #try2hack.level9. To get the key you need to decode the following line:
TGV2ZWw5LW15QkIzREl1eDVM=
Good luck, and see you on #try2hack.level9.
у нас начинается паника и мы незнаем. что за ?
TGV2ZWw5LW15QkIzREl1eDVM=
хмм с первого взгляда мне показалось ето всё сложно но я вспомнил, мирковские скрипты пишем /echo $decode(TGV2ZWw5LW15QkIzREl1eDVM=,m) и мы получяем Level9-myBB3DIux5L ето будет у нас кей, заходим в канал и нам выбивает нотис
-LEVEL9-XXX- Welcome, I am try2hack Level9! Decode the following line to proceed:
-LEVEL9-XXX- 010011100110100101100011011001010010000001101010011011...
старый добрый binary... если нехотите разшифровать в ручную ну чтож
http://www.nickciske.com/binary/index.php
мы получим "Nice job. Now type '/msg TRY2HACK showbug' to see the bug"
ну пишем /msg TRY2HACK showbug и он нам показывает баг таковой
-TRY2HACK- ovaq pgpe - CVAT pgpe:cvatercyl
-TRY2HACK- cebp pgpe:cvatercyl {avpx hubfg unaq qrfg xrl net} {
-TRY2HACK- frg qhe [rkce [havkgvzr] - $net]
-TRY2HACK- chgfrei "ABGVPR $avpx :Lbhe cvat ercyl gbbx $qhe frpbaqf"}
Ооо нет опять он зашиврован ну мы опять воспользуемся разшивровщиком линк выше кто забыл %) ... разшифровали ....А вот и баг ... я на етом месте и подсел если кто сделает скинте мыло на neon@balticum-tv.lt.
За решение 9ого задания благодарим NeoN'a =)