Time
50
All of you want is time and all you have is time.
ダウンロードしたファイルをfileコマンドで確認します。LinuxのARM CPUの実行ファイルのようです。
$ file TimeTime: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, stripped
qemuで実行してみます。動きません。
Dynamicリンクの場合ライブラリの場所を指定する必要があります。-Lオプションでライブラリの場所を指定して再度実行してみます。$ qemu-arm ./Time/lib/ld-linux.so.3: No such file or directory
$ qemu-arm -L /usr/arm-linux-gnueabi/lib/ ./Time/lib/ld-linux.so.3: No such file or directory
それでも動きませんので、/libフォルダにリンクを張ります。
$ sudo ln -s /usr/arm-linux-gnueabi/lib/ld-linux.so.3 .$ sudo ln -s /usr/arm-linux-gnueabi/lib arm-linux-gnueabi
そして再度実行してみます。Keyを聞いてきますので適当に入力するとチェックではじかれるようです。
$ qemu-arm ./TimeYou sucessfully loaded the file :)Enter your Key123456Flag check failed
それでは、ARMのobjdumpで逆アセンブルします。
以下の箇所を見ると、アドレス0x1084cのデータと0x7とのxorを取っているようです。$ arm-linux-gnueabi-objdump -s -D Time > aaa.txt
8574: e59f3058 ldr r3, [pc, #88] ; 0x85d48578: e51b2008 ldr r2, [fp, #-8]857c: e7933102 ldr r3, [r3, r2, lsl #2]8580: e2233007 eor r3, r3, #78584: e1a00003 mov r0, r38588: ebffff8b bl 0x83bc(略)85d4: 0001084c andeq r0, r1, ip, asr #16
アドレス0x1084cを見てみます。0x7とxorをとるとフラグになりそうですね。
それでは、文字列"nidsa|So6tX&tXmRtsXso4XE4`niIni`z"を1文字ずつ0x7とxorを取ってみます。セクション .data の内容:10844 00000000 00000000 6e000000 69000000 ........n...i...10854 64000000 73000000 61000000 7c000000 d...s...a...|...10864 53000000 6f000000 36000000 74000000 S...o...6...t...10874 58000000 26000000 74000000 58000000 X...&...t...X...10884 6d000000 52000000 74000000 73000000 m...R...t...s...10894 58000000 73000000 6f000000 34000000 X...s...o...4...108a4 58000000 45000000 34000000 60000000 X...E...4...`...108b4 6e000000 69000000 49000000 6e000000 n...i...I...n...108c4 69000000 60000000 7a000000 98a9365a i...`...z.....6Z
s = "nidsa|So6tX&tXmRtsXso4XE4`niIni`z"a = ""for c in s:a = a + chr(ord(c) ^ 0b00000111)print a
このPythonプログラムを実行すると以下のとおり出力されます。
inctf{Th1s_!s_jUst_th3_B3ginNing}
フラグは、
inctf{Th1s_!s_jUst_th3_B3ginNing}です。









