Tag Archives: obfuscation

Hack.Lu CTF 2013 – Packed

Hack.Lu CTF 2013 - Packed - Task Description

Die Challenge “Packed” beschreibt den Fund verwürfelter Daten, in denen sich irgendwo noch etwas Nützliches befinden soll. Zur Bearbeitung erhalten wir nur eine Datei, die wir zunächst etwas genauer untersuchen:

Hack.Lu CTF 2013 - Packed - File Content

Neben vielen Bytes, die sich nicht wirklich zuordnen lassen, sind doch drei Dinge relatisch schnell erkennbar. Im oberen Bereich befindet sich ein PDF, das im Magick zu erkennen ist (nicht abgebildet). Darunter befindet sich ein Text aus ASCII-Zeichen, der jedoch unverständlich ist. Zusammen mit dem Wort “rot”, das in der Datei vorhanden ist, könnte es sich jedoch um einen ROT13-Cipher handeln.

Im unteren Bereich befindet sich ein langer Abschnitt aus Base64-kodierten Daten. Wenn wir die Abschnitte nun einzeln untersuchen, stellen wir Folgendes fest. Die PDF-Datei kann direkt ausgeschnitten und dann geöffnet werden. Als Ergebnis erhalten wir diese Ausgabe:

Hack.Lu CTF 2013 - Packed - PDF File Part

Sowohl optisch als auch forensisch sind keine weiteren Informationen aus dieser Datei zu entnehmen.

Continue reading

NcN 2013 CTF Quals – Level 1

NcN 2013 Qualification - Level 1 - Task Description

To get the key for “Access Level 1” we need to pass an authentication form. When trying to submit a key, we get the following reply:

NcN 2013 Quals - Level 1 - Invalid Password

So we need to have a look into the source code of the password validation functions. At first we are going to see the HTML lines (index.php). The interesting ones are these:

<script type="text/javascript" src="crypto.js"></script>

<form action="login.php" method="POST" onsubmit="return encrypt(this);">
  <input id="key" type="hidden" name="key" value="" />
  <input id="verification" type="hidden" name="verification" value="yes" />
</form>

As we can see the page uses an external JavaScript file to calculate the validation of the password. Next step will be to examine this script file (crypto.js). It looks like this:

var _0x52ae=["\x66\x20\x6F\x28\x38\x29\x7B\x63\x20\x69...
...,"\x67"];eval(function (_0x7038x1,_0x7038x2,_0x7038x3..
...toString(36));};if(!_0x52ae[4][_0x52ae[6]](/^/,String)..
...[0],46,46,_0x52ae[3][_0x52ae[2]](_0x52ae[1]),0,{}));

The JavaScript itself uses many “eval” (evaluation) functions, confusing variable names and is incredible obfuscated at all. It cannot be read this way! So we need make it readable again – at best evaluate the “eval” function to get the real plain source code. It very good way to do so is using raw SpiderMonkey – the Mozilla JavaScript engine:

Continue reading

CodeGate 2012 Quals – misc #4

Für die Aufgabe 4 der Kategorie “misc” gibt es keine Beschreibung oder Hinweise darauf, was als Lösung erwartet wird, sondern nur einen Link zu einer ZIP-Datei. Das Ziel der Challenge gilt es also selbst heraus zu finden.

Nachdem die Datei entpackt ist, stellt sich der Inhalt zunächst als Webseite dar. Anhand der Bezeichnung “codegate_homepage” kann hier schon vermutet werden, um was es sich wahrscheinlich handeln wird.

rup0rt@lambda:~/codegate_site$ ls -a *
codegate_homepage.htm

codegate_homepage_files:
.                 e_menu_2.gif         e_sub_top_img_2.jpg
..                e_menu_3.gif         inc_left.htm
codegate.css      e_menu_4.gif         inc_right.htm
codegate.js       e_menu_5.gif         main_bg_1.gif
copy_logo.gif     e_menu_6.gif         main_bg_2.gif
e_6.jpg           e_menu_7.gif         Thumbs.db
e_inc_bottom.htm  e_menu_8.gif         top_img.jpg
e_inc_sub_2.htm   e_sub_title_2_2.gif
e_menu_1.gif      e_sub_title_b.gif

Als erstes öffnen wir also die “codegate_homepage.htm” im Browser und verschaffen uns einen Überblick über den Inhalt.

CodeGate CTF 2012 - misc #4 - website

Bei der Webseite scheint es sich um die normale CodeGate-Homepage zu handeln. Auf den ersten Blick erscheint nichts auffällig. Außer dieser Seite scheinen auch keine weiteren Inhalte zu existieren, da die Links weiterhin auf die orginale Webseite im Internet und nicht auf lokale Dateien verweisen.
Continue reading