SECCON 2015 Online CTF でちょっと解いた話
こんにちは.SECCON WARS解く担当の @3846masa です.
(SECCON WARSしか解けないとも言う)
そんなわけで,SECCON 2015 Online CTF に参加しました.
Nakano Computer Club(NCC)ってことで参加しました.
ほとんど問題解けなかったですが...(時間は溶けた)
去年も似たようなもんですね.
成長してないようです.(セキュリティの人じゃないからな...)
以下,ちょっとだけWriteup.
[SECCON 2015] Start SECCON CTF
ex1 Cipher:PXFR}QIVTMSZCNDKUWAGJB{LHYEO Plain: ABCDEFGHIJKLMNOPQRSTUVWXYZ{} ex2 Cipher:EV}ZZD{DWZRA}FFDNFGQO Plain: {HELLOWORLDSECCONCTF} quiz Cipher:A}FFDNEVPFSGV}KZPN}GO Plain: ?????????????????????
簡単なプログラムを組めばOKですね.
var key = 'PXFR}QIVTMSZCNDKUWAGJB{LHYEO'.split(''); var val = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ{}'.split(''); var obj = {}; for (var i = 0; i < key.length; i++) obj[key[i]] = val[i]; var q = 'A}FFDNEVPFSGV}KZPN}GO'.split(''); var a = q.map((k) => obj[k]).join(''); console.log(a);
(「let使え」おじさんに怒られる...)
[SECCON 2015] SECCON WARS 2015
まず動画を何らかの方法で入手します.
あとは,ffmpegとImagemagickにかかれば楽勝ですね.
ffmpeg -i videoplayback -f image2 %06d.jpg # 目視でQRコードにSECCONが被っている部分を削除する convert *.jpg -background none -compose lighten -flatten export.png
ほらこの通り!
[SECCON 2015] Command Line Quiz
telnet caitsith.pwn.seccon.jp User:root Password:seccon すべての *.txt ファイルを読め
What command do you use when you want to read only top lines of a text file? Set your answer to environment variable named stage1 and execute a shell. $ stage1=$your_answer_here sh If your answer is what I meant, you will be able to access stage2.txt file.
英語読めないですよね.なので,シェル書きましょう.
for n in $(ls -1 /sbin /bin /usr/bin /usr/sbin); do stage1=$n sh -c "cat stag e2.txt 2>/dev/null && echo && echo $n"; done
あとは,上のstageNとstageMを書き換えていけば,最終段階まで行けます.
ちなみに答えは,stage1='head' stage2='tail' stage3='grep' stage4='awk'
すると,
OK. You reached the final stage. The flag word is in flags.txt file. flags.txt can be read by only one specific program which is available in this server. The program for reading flags.txt is one of commands you can use for processing a text file. Please find it. Good luck. ;-)
よくわからないですね.... なんかしらのコマンドに突っ込むらしいです.
ls /bin /sbin /usr/bin /usr/sbin
次のリストから,テキスト加工できそうなコマンドを試していきました.
(勘のいい人はsed
が思いつくんでしょうね,きっと...)
/bin: addgroup dumpkmap iproute mt sh adduser echo iprule mv sleep ash ed iptunnel netstat stat cat egrep kill nice stty catv false linux32 pidof su chattr fdflush linux64 ping sync chgrp fgrep ln ping6 tar chmod fsync login pipe_progress touch chown getopt loginshell printenv true cp grep ls ps umount cpio gunzip lsattr pwd uname cttyhack gzip makemime reformime uncompress date hostname mkdir rm usleep dd hush mknod rmdir vi delgroup ionice mktemp rpm watch deluser ip more run-parts zcat df ipaddr mount scriptreplay dmesg ipcalc mountpoint sed dnsdomainname iplink msh setarch /sbin: acpid hwclock mkdosfs start-stop-daemon adjtimex ifconfig mkfs.minix sulogin arp ifdown mkfs.vfat swapoff blkid ifenslave mkswap swapon depmod ifup modprobe switch_root devmem init nameif sysctl fbsplash insmod pivot_root syslogd fdisk klogd poweroff tunctl findfs loadkmap raidautorun udhcpc freeramdisk logread reboot vconfig fsck losetup rmmod watchdog fsck.minix lsmod route zcip getty makedevs runlevel halt man setconsole hdparm mdev slattach /usr/bin: [ diff ifplugd od sha1sum ttysize [[ dirname install openvt sha256sum udpsvd ar dos2unix ipcrm passwd sha512sum unexpand arping du ipcs patch showkey uniq awk dumpleases kbd_mode pgrep softlimit unix2dos basename eject killall pkill sort unlzma beep env killall5 printf split unxz bunzip2 envdir last pscan strings unzip bzcat envuidgid length readahead sum uptime bzip2 ether-wake less readlink sv uudecode cal expand logger realpath tac uuencode chat expr logname renice tail vlock chpst fdformat lpq reset tcpsvd volname chrt find lpr resize tee wc chvt fold lzmacat rpm2cpio telnet wget cksum free md5sum rtcwake test which clear ftpget mesg runsv tftp who cmp ftpput microcom runsvdir tftpd whoami comm fuser mkfifo rx time xargs crontab hd mkpasswd script timeout xzcat cryptpw head nc seq top yes cut hexdump nmeter setkeycodes tr dc hostid nohup setsid traceroute deallocvt id nslookup setuidgid tty /usr/sbin: brctl dhcprelay ftpd lpd readprofile svlogd chpasswd dnsd httpd popmaildir sendmail telnetd chroot fakeidentd inetd rdate setfont udhcpd crond fbset loadfont rdev setlogcons
そんなわけで,sed -e 's/^//g' flags.txt
したらフラグが出ます.
おわりに
楽しかったので来年も参加します.
食わず嫌いしないでバイナリとかも勉強しましょう.
(Webにバイナリの波が押し寄せているからな... orz)
ちなみに,HTTP2問はHTTP2であることまでしかわかりませんでした.バイナリこわい