czwartek, 1 maja 2008

Let's Get This Party Started!

http://hackme.pl/viewpage.html?page_id=3
www.uw-team.org/hackme/index.htm HACKME 1.0

Level #1
Prościzna - przewijamy stronke na doł i mamy: (haslo.value=='a jednak umiem czytac') :P
Forward do: ok_next.htm

Level #2

Ciekawie wyglada druga linijka ;-P

parametr src ustawia nam zrodelko
otwieramy stronke /haselko.js i okazuje sie, że has to nasza taka mała zmienna, a wszystko to było za proste :P
Forward do: formaster.htm

Level #3

Kolejna łatwa sprawa - wyciaganie znaczkow ze stringa :)
var dod='unknow';
var literki='abcdefgh';
ost=literki.substring(2,4)+'qwe'+dod.substring(3,6);

i w końcu haslo.value==ost
Google nie gryzie - Metoda substring zwraca podciąg ciągu string rozpoczynający się od znaku o indeksie indeks1 i kończący się przed znakiem o indeksie indeks2.
W innzch jezykach chyba lapie takze ostatnią literę? Przykład: var tab = "abcdefg".substring(2, 5);
da w wyniku ciąg cde.

ost = 'cd' + 'qwe' + 'now' = "cdqwenow"
I jedziemy dalej. Forward do cdqwenow.htm

Level #4

Źródełko, źródełko, powiedz nam hasełko :)
Googla nie wyłączyli, więc szukamy co robi funkcja IsNaN.

Ta funkcja zwraca wartość false, jeżeli parametr wartość przedstawia wartość liczbową, lub true, w przeciwnym razie. A zatem wykonanie instrukcji:
isNaN("abc")
spowoduje zwrócenie wartości false, a:
isNaN("123")
zwrócenie wartości true.


Trochę mało...
Kolejna porcja wiedzy:

Metoda round zwraca wartość wynikającą z zaokrąglenia parametru wartość do najbliższej liczby całkowitej, np.:
Math.round(4.49)
da w wyniku wartość 4, natomiast
Math.round(4.51)
da w wyniku wartość 5.


No to jedziemy z tą matematyką:
(6%2)*(258456/2))+(300/4)*2/3+121
6 modulo 2 =0
0 razy cokolwiek = 0
300/4 = 75
75* 2 = 150
150/3 = 50
121 + 50 = 171

Wklepujemy 171 i... zostalismy przekierowani na stronkę go171.htm :)P

Level #5

Post mi się skasował od tego miejsca ;(
A Blogger się chwali, że ma auto zapisywanie...
Wracając do zadanka, chyba czas na trochę nauki.

Metoda getMinutes zwraca liczbę sekund czasu reprezentowanego przez obiekt data.

Praktycznie rzecz biorąc wszystko jest w jednej linijce:
ile=((seconds*(seconds-1))/2)*(pomoc.value%2); , a ile ma wynosić 861
zmienna pomoc jest brana z pola tekstowego, a nastepnie mnożona kilka razy. Jeżeli mnożenie, to wynik modulo nie może dać zera. Tak więc liczby parzyste odpadają na dzień dobry. Już wiemy, ze należy wprowadzić jakąkolwiek liczbę nieparzystą.

Zostało nam do rozwiążania równanie:
861 = ((seconds*(seconds-1))/2)*1;
861 = ((seconds*(seconds-1))/2);
861*2 = seconds*(seconds-1);
1722 = seconds*(seconds-1);

Możemy to przekształcić:
1722 = seconds*seconds - seconds;
1722+seconds = seconds*seconds;

Możemy rozwiązać równanie kwadratowe postaci:
seconds^2 - seconds - 1722 = 0

albo zauważamy, ze kwadrat 41 = 1681 - trochę mało.
kwadrat 42 = 1764
1764-42=1722 Bingo!

Należy wpisać jakąkolwiek liczbę nieparzystą i kliknąć w 42. sekundzie. :)
Forward na: 42x.htm

Level #6
Weźmiemy się za to w wolnym czasie

I czekają na nas kolejne literki :P

var lit='abcdqepolsrc';
var licznik=0;
for (i=1; i<=5; i+=2){
licznik++;
if ((licznik%2)==0) {znak='_';} else {znak='x';}
hsx+=lit.substring(i,i+1)+znak;
}
hsx+=hsx.substring(hsx.length-3,hsx.length);


pierwsze, co zauważamy, i będzie miało trzy wartośći: inicjującą 1,3,5.
startujemy z pierwszym obrotem pętli.
licznik=1, więc modulo = 1, wartosc z if false, pierwszy znak 'x';
hsx.substring(1,2)= 'b'; hsx = 'bx'
Drugi obrot petli:
i=3,licznik=2, znak='_';
hsx.substring(3,4) = 'd';
hsx = 'bxd_';
Trzeci obrót:
i=5,licznik=3, znak='x';
hsx.substring(5,6) = 'e';
hsx = 'bxd_ex';
Wychodzimy z petli.
Teraz wykonuje się instrukcja:
hsx+=hsx.substring(hsx.length-3,hsx.length);
hsx = hsx + hsx.substring(3,6);
hsx = 'bxd_ex' + '_ex';
hsx = 'bxd_ex_ex';

Hurra, lvl 7 :)
Forward do: bxd_ex_ex.htm

Level #7

Zerkając na kod aż się rzuca w oczy, że wystarczy plxszn_xrv wkleić do adresu, dodać htm i już jesteśmy w lvl8.
Ale bądźmy bardziej uczciwi :)

plxszn_xrv = spróbujmy to odkodować
podstawiając to do prawej strony i odczytując lewą wychodzsi nam hasełko="kocham cie" :P

Level #8

Ale fajny kodzik :)

Nawet część jest hexadecymalnie :)
Szczególnie ładnie wygląda linijka:
document.write('<\s'+'c'+'r'+'i'+'p'+'t src="%7A%73%65%64%63%78%2E%6A%73"><\/s'+'c'+'r'+'i'+'p'+'t'+'>');
Nie bardzo nam się chce odkodowywać zapis hexadecymalny, więc wpisując w Operę dostajemy: zsedcx.js


ax=eval(2+2*2);
bx=eval(ax/2);
cx=eval(ax+bx);
get=0;


Odkodowanie %70%61%73%73%77%64 z końca źródła strony daje ciekawy wynik :P
Więc zabieramy się za liczenie...
var roz='dsabdkgsawqqqlsahdas'; var tmp=roz.substring(2,5)+roz.charAt(12);
Pamiętając o indeksacji od zera tmp = 'abdq';

metoda eval zwraca nam obliczoną wartość przekazaną w parametrze, lub wykonuje tak jak u nas zmienne.


function sprawdz()
{
zaq=haslo.value; wyn='';
alf='qwertyuioplkjhgfdsazxcvbnm';
qet=0;
for (i=0; i<=10; i+=2)
{
get+=10;
wyn+=alf.charAt(qet+i);
qet++;
}
wyn+=eval(ax*bx*cx);
if (wyn==zaq) {self.location.href=wyn+'.htm';} else {alert('Zle haslo!');}
}


Trzeba to policzyć :(

Nie bardzo mi się chce :P
Zapis na dysk, mały alert i mamy pasełko "qrupjf162"

You win!

Gratulacje!
Wlasnie przeszedles gre Hackme 1.0 by Unknow!
Gratuluje cierpliwosci

HackMe 1.0 zaliczone! Bierzemy się za kolejne.

Brak komentarzy: