Skip to content

Instantly share code, notes, and snippets.

@hhc0null
hhc0null / exploit.py
Created July 25, 2015 04:23
WhiteHatContest10 pwn200
#!/usr/bin/env python2
import binascii
import re
import socket
import struct
import subprocess
import sys
import telnetlib
import time
@hhc0null
hhc0null / haas_memo.md
Created July 13, 2015 17:30
PoliCTF 2015 Pwn(pwn50, pwn150, pwn350)

PoliCTF 2015 pwn50-Hanoi_As_A_Service

Hanoi As A Service

50 Points

Check out our shiny new HaaS platform!

nc haas.polictf.it 80

This is a code injection challenge on Prolog.

Your First Format String Attacks.

1. What's the `Format String Bugs'?

 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
@hhc0null
hhc0null / iptables.rules
Last active August 29, 2015 14:22
iptables rules for shoijn.
# Shojin!
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
# twitter.com.
-A INPUT -s 199.59.148.10 -p tcp -i eth0 -j REJECT
-A INPUT -s 199.59.148.82 -p tcp -i eth0 -j REJECT
-A INPUT -s 199.59.149.198 -p tcp -i eth0 -j REJECT
-A INPUT -s 199.59.149.230 -p tcp -i eth0 -j REJECT
@hhc0null
hhc0null / patcher.py
Created May 18, 2015 01:56
[DEFCON_23_Quals-misc-patcher-3pts]
#!/usr/bin/env python2
import binascii
import re
import struct
import sys
uh = lambda x: binascii.unhexlify(x)
hx = lambda x: binascii.hexlify(x)
p = lambda x: struct.pack("<I", x)
@hhc0null
hhc0null / cgsb.c
Last active August 29, 2015 14:21
[DEFCON_23_Quals-pwn-cybergrandsandbox-2pts]
// output_buffer: 0xb7fef000
// jit_struct: 0xb7fed000
int sub_8049668(char *arg_0, char *arg_4, int arg_8)
{
if(arg_8 != 0 && arg_8-2 > '"' /* 0x22 */) { // unsigned
return 0;
}
char *val_0 = arg_0;
int val_1;
@hhc0null
hhc0null / incomplete_exploit.py
Last active August 29, 2015 14:20
[VolgaCTF_2015_pwn-my_little_pwnie-250pts]
#!/usr/bin/env python2
import binascii
import re
import socket
import struct
import subprocess
import sys
import telnetlib
import time
@hhc0null
hhc0null / tiny_bash.c
Created May 1, 2015 17:47
[VolgaCTF_2015_pwn-bash-125pts]
/*
bash
just another super-puper secure shell
nc bash.2015.volgactf.ru 7777
tiny_bash[http://files.2015.volgactf.ru/bash/tiny_bash]
*/
char *bss_602140h[] = {"flag", "bash", "python", "netcat", "perl", "args", "pico", "echo", "grep", "find", "sudo", "system", "exec", "regexp", "tail", "head", "less", "more"};
@hhc0null
hhc0null / quine.c
Last active August 29, 2015 14:19
[Teaser_CONFidence_CTF_2015_Pwning-Quine-400pts] Unsolved.
struct hoge {
char *offset_00h;
int offset_04h; // max length.
int offset_08h; // counter.
}
void sub_804889d(char *arg_0)
{
puts(arg_0);
exit(EXIT_FAILURE);