Archive for the ‘Wargames’ Category

HTS: Javascript Missions

13/06/2009

Εδώ θα παραθέσω έναν οδηγό για τις αποστολές της Javascript στο http://www.hackthissite.org. Όλες οι αποστολές της Javascript είναι εύκολες αρκεί να υπάρχει βασική γνώση της Javascript αλλά και το Firebug (extension του Firefox) εγκατεστημένο. Εφόσον πληρούνται οι δύο αυτές προϋποθέσεις ξεκινάμε!

Mission 1 – «cookies«
Βλέπουμε τον κώδικα της σελίδας και αναζητούμε το κομμάτι που περιέχει Javascript. Εκεί βλέπουμε ξεκάθαρα ότι ο ζητούμενος κωδικός είναι η λέξη «cookies«.

Mission 2
Απλά απενργοποιούμε τη Javascript…

Mission 3 – «12345678901234»
Κοιτάμε τον κώδικα και βλέπουμε ότι η μεταβλητή moo παίρνει την τιμή 14. Συνεπώς αρκεί να εισάγουμε μία οποιαδήποτε συμβολοσειρά που να έρχει μήκος 14 χαρακτήρων (έστω «12345678901234»)..

Mission 4 – «moo«
Εξετάζουμε τον κώδικα και παρατηρούμε πως με διαδοχικές αντικαταστάσεις η μεταβλητή x λαμβάνει την τιμή «moo» και αυτή η τιμή είναι και ο κωδικός. Μπορούμε και να αξιοποιήσουμε το firebug εισάγοντας ένα breakpoint στο σημείο ελέγχου της τιμής του textbox όπου μπορούμε να δούμε και εκεί πως η τιμή του x είναι «moo«.

Mission 5 – «ilovemoo«
Εδώ το firebug είναι απαραίτητο ώστε να δούμε τι μας κρύβει η εντολή unescape(«…»). Βλέπουμε λοιπόν, πως ο κωδικός είναι «ilovemoo«.

Mission 6 – «moo pwns«
Ψάχνουμε πάλι τον κώδικα της σελίδας και κοιτάμε στον κώδικα της HTML φόρμας που περιέχει το κουμπί ώστε να δούμε ποιο script καλείται για να πραγματοποιήσει τον έλεγχο. Βλέπουμε ότι το ζητούμενο είναι το checkpass. Ψάχνοντας το αρχείο για το checkpass βλέπουμε ότι υπάρχει μόνο στην τοποθεσία http://www.hackthissite.org/missions/javascript/6/checkpass. Εκεί διαβάζοντας τον κώδικα βλέπουμε πως ο ζητούμενος κωδικός είναι «moo pwns»

Mission 7 – «j00w1n«
Βλπουμε στον κώδικα της σελίδας πως η Javascript έχει υποστεί κάποιας μορφής κωδικοποιήση ώστε να μην είναι δυνατόν να αναγνωστεί.  Εδώ θα μας βοηθήσει (πάλι) το Firebug. Αρκεί να κάνουμε δεξί κλικ πάνω στο textbox και inspect element. Εκεί βλέπουμε πως έχει γίνει «αποκωδικοποίηση» της Javascript ώστε να είναι αναγνώσιμη. Ο κωδικός πλέον είναι εύκολα αναγνώσιμος..»j00w1n»

Κάτι μάθαμε και από αυτό για τη Javascript.

HTS: Basic Levels

02/05/2009

Με χαρά όλο και ανακαλύπτω νέα wargames. Το νέο παιχνιδάκι βρίσκεται εδώ www.hackthissite.org και είναι αρκετά εθιστικό…
Λέω λοιπόν καθώς προχωράω να γράφω και ένα walk through (για να θυμάμαι και γω τη γνώση που απέκτησα)

Λοιπόν εφόσον εγγραφείτε μπορείτε να ξεκινήσετε με τα Basic Levels ώστε να πάρετε και μία γεύση…

  • Basic Level1 – 9f620194
    Αρκεί να δείτε τον κώδικα HTML και να εντοπίσετε τον κωδικό.
  • Basic Level2 –
    Πολύ απλά πράματα…Απλά κάντε κλικ στο submit..
  • Basic Level3 – a5561067
    Παρατηρώντας τον κώδικα της σελίδας παρατηρούμε ότι η φόρμα γίνεται post και καλείται μία φόρμα με το όνομα «password.php». Αν λοιπόν δοκιμάσουμε να δούμε απλά τη σελίδα αυτή, θα δούμε τον κωδικό…Απρόσεχτος ο κύριος Sam 🙂
  • Basic Level4 – 0fcda489
    Εδώ πρέπει να εκμετταλευτούμε το script που έχει γράψει ο κύριος Sam ο ξεχνονούσης. Για να το κάνουμε αυτό, βλέπουμε πως (από τον κώδικα της σελίδας) στέλνει με POST την τιμή «webmaster@hulla-balloo.com». Δοκιμάζουμε λοιπόν και γράφουμε ένα δικό μας html οποίο να κάνει ουσιαστικά post μια δική μας διεύθυνση (μην περιμένετε email οπότε μη βάλετε και το email σας..ένα απλό a@e.com κάνει).
    Ορίστε και ο κώδικας…

    Επίλυση level4

    Επίλυση level4

  • Basic Level5 – 0fcda489
    Εδώ τα πράγματα σοβαρεύουν ευχάριστα. Φαίνεται να είναι το ίδιο με προηγουμένως, όμως δεν είναι. Αν δοκίμασετε τον κώδικα που δοκιμάσαμε πριν, θα δείτε πως βγάζει ένα μήνυμα «Refferer error: Check Refferer (This is not a bug)». Ο λόγος είναι πως ελέγχει αν το αίτημα στην php έχει γίνει εντός του domain (hackthissite.org) και φυσικά επειδή δεν έχει γίνει, μας απορρίπτει. Εδώ θα εκμεταλλευτούμε την δύναμη (αδυναμία) της Javascript. Γενικά η Javascript εκτελείται μόνο στην πλευρά του χρήστη και (συνήθως εκτός από εδώ :-)) δεν «ταξιδεύει» προς τον διακομιστή. Τι κάνουμε; Αλλάζουμε μέσω Javascript την τιμή του email!! Πως; Αρκεί να γράψουμε στο URL bar του Firefox το εξής
    javascript:alert(document.forms[0].value=e@a.com)
    και μετά το submit να αποκτήσουμε τον πολυπόθητο κωδικό!
  • Basic Level6 – fd59786f
    Εδώ έχουμε το πρώτο δείγμα κρυπτογραφίας…Το όλο κόλπο είναι να δούμε πως κρυπτογραφεί τον κωδικό. Δοκιμάζουμε στο input που μας δίνει το string «aaaa» που μας επιστρέφει «abcd». Οδηγούμαστε λοιπόν στο συμπέρασμα πως μάλλον αυτό που κάνει είναι σε κάθε χαρακτήρα να προσθέτει 1 (στον αντίστοιχο ASCII δεκαδικό του) και να εκτυπώνει τον αντίστοιχο χαρακτήρα. Συνεπώς…

    • f + 0 = f
    • d + 1 = e
    • 5 + 2 = 7
    • 9 + 3 = <
    • 7 + 4 = ;
    • 8 + 5 = =
    • 6 + 6 = <
    • f + 7 = m
    • fd59786f -> fe7<;=<m

    Δοκιμάζοντας..Βλέπουμε ότι η υπόθεση μας είναι σωστή!

  • Basic Level7 – 2596a7a7
    Εδώ βλέπουμε πόσο πρέπει να προσέχουμε όταν δημιουργούμε αλληλεπιδράσεις μεταξύ web – unix shell καθώς μπορεί αρχεία που δεν πρέπει να εμφανιστούν στην επιφάνεια. Αυτό προσπαθούμε να εκμεταλλευτούμε. Το script της Perl κάνει κλήση στην cal εντολή του unix.. Όμως αρκεί να σκεφτούμε πως μπορούμε γενικά να κάνουμε το εξής: command1 ; command 2 ή command1 && command2. Οπότε ελπίζουμε πως εμείς καλούμαστε να συμπληρώσουμε τα ορίσματα της cal. Συνεπώς γράφουμε «; ls» και όντως βλέπουμε ότι συμπληρώναμε την εντολή και λαμβάνουμε τα περιεχόμενα του φακέλου. Το αρχείο k1kh31b1n55h.php περιέχει τον κωδικό που θέλουμε.
  • Basic Level8 – aaeaa938
    Και εδώ είναι σχεδόν ίδια η ιδέα μόνο που εκμετταλευόμαστε κενό της PHP με τη χρήση S(erver)S(ide)I(ncludes) δηλαδή ουσιαστικά εντολές που δίνουμε προς τον διακομιστή. Κοιτώντας εδώ (SSI Reference) γνωρίζουμε ότι γράφοντας <!-- #exec cmd="cmd text"--> μπορούμε να εκτελέσουμε εντολές στο λειτουργικό σύστημα! Δοκιμάζουμε τότε το ακόλουθο (μετά από σχετικό ψάξιμο)<!-- #exec cmd="ls .."--> και βουαλά βρίσκουμε το ενδιαφέρον αρχείο αλλά και τον κωδικό!
  • Basic Level9 – d30e37df
    Βάση των όσων αναφέρει πρέπει να χρησιμοποιήσουμε τη φόρμα της level8. Αλλά δεν αλλάζει κάτι απλά πρέπει να πάμε στο folder της 9.. Συνεπώς το μόνο που αλλάζει είναι η SSI εντολή και γίνεται<!-- #exec cmd="ls ../../9/"-->. Τα υπόλοιπα τα ξέρετε..
  • Basic Level10
    Εδώ θέλουμε να εκμεταλλευτούμε τα cookies..Βάζουμε κάποιο plugin στο Firefox ώστε να μπορούμε να κάνουμε edit τα cookies και απλά αλλάζουμε το cookie με το όνομα level10_authorized…

Έτσι τελειώσαμε με το Basic Levels.. Σε άλλο post η συνέχεια!