趋势科技举办的CTF比赛,题目的分类比较奇怪,而且本次题目中linux binary非常少,很多是windows binary。
这次是跟随队伍一起比赛,贡献了400分,比之前划水的时候多了不少。

照例是先放一些自己搞出来的题。

Continue reading

之前在打CTF的时候写exploit,总是为了找不到shellcode而发愁,最近更新的peda的shellcode生成功能好像都不好使了,只能使用那万年不变的24 bytes shellcode,而且还没办法规避某些特殊字符。

不过metasploit framework套件中的msfpayload与msfencode配合使用可以做到生成指定的payload,现在这两个工具进行了合并,这就是msfvenom。安装了整个msf的话这个工具就已经包含其中了。

Continue reading

MMA CTF 2015 - Writeups

in CTF

比赛时间:2015-09-05 00:00 UTC — 2015-09-07 00:00 UTC
独立玩的一次比赛,其实也比较水,因为也很久没打了,自己的水平本来就不高这次更是只能干看着……
先放一些自己当时搞出来的题好了,后面接一些转载来的。

链接均出自github的write-ups-2015仓库

目录

pwn/RPS
forensics/Splitted
crypto/Smart Cipher System
stego/Stream
web/Login as admin!
web/Login as admin!(2)
web/Uploader
misc/MQAAAA
reverse/Can not be run

Continue reading

最近看了一些CTF比赛的writeup,也接触到了一些比较好用的工具,所以就把它们记在下面,供以后参考。

pcapfix

pcap与pcapng文件的修复工具,适用于一些header损坏的pcap文件。

JEB

Android apk逆向分析神器,使用java编写可以跨平台使用,相当于apktool+jad+dex2jar的组合,既能够反编译出smali代码又能最终反编译出java代码,还可以进行字符串、资源分析。

不过就是它并不是开源软件:)

使用之前需要注意的就是如果无法加载swt包,就在网上下载一个适用于系统的swt.jar替换原有的swt.jar即可。

fsck.ext4

Linux中自带的文件系统修复工具,可以用于修复破损的img文件。

extundelete

与ext3grep工具类似,ext文件系统的文件反删除工具,可以根据inode信息恢复被删除的文件,需要安装ext2fs library.编译安装后运行

1
extundelete --restore-all corrupt-file.img

exiftool

文件元数据(meta data)的提取工具,支持多种文件的详细元数据,在做审计分析的题时非常有用,因为flag经常藏在一些比较冷门的meta data中。

unpy2exe

对于使用py2exe打包之后的python程序,可以回复成之前的pyc字节码。

uncompyle2

可以与上面的工具配合使用,能够将pyc或者pyo的字节码反编译成py源代码。

Comment and share

Level 5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <string.h>

int main(int argc, char **argv) {

char buf[128];

if(argc < 2) return 1;

strcpy(buf, argv[1]);

printf("%s\n", buf);

return 0;
}

典型的buffer overflow,而且没有任何的保护措施,直接在栈上执行shellcode就可以了。

在拿到shell之前需要先进行setreuid提权,写出shellcode。

Continue reading

AsisCTF 2015 - Simple Algorithm

Score: 100

根据下面的加密算法和给出的密文解出flag

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/usr/bin/python

flag = '[censored]'
hflag = flag.encode('hex')
iflag = int(hflag[2:], 16)

def FAN(n, m):
i = 0
z = []
s = 0
while n > 0:
if n % 2 != 0:
z.append(2 - (n % 4))
else:
z.append(0)
n = (n - z[i])/2
i = i + 1
z = z[::-1]
l = len(z)
for i in range(0, l):
s += z[i] * m ** (l - 1 - i)
return s

i = 0
r = ''
while i < len(str(iflag)):
d = str(iflag)[i:i+2]
nf = FAN(int(d), 3)
r += str(nf)
i += 2

print r
Continue reading

BrieflyX

Previous chief leader of 9# Studio


Infomation Security Engineer


Beijing, China