记事本

0CTF freenote

这道题目是关于heap overflow的。之前没有接触过这方面。通过阅读http://winesap.logdown.com/posts/258859-0ctf-2015-freenode-write-up, http://winesap.logdown.com/posts/258859-0ctf-2015-freenode-write-up这两篇writeup,基本上明白了原理,在此记录...

通过DT_DEBUG来获得各个库的基址

最近,在学习BCTF和0CTF的writeup时,注意到了一种通过DT_DEBUG来获得库的基址的方式:BCTF里的pattern用这一方法来获得ld-linux.so的地址,0CTF里的sandbox用这一方法来获得sandbox.so的基址。之前面对ASLR,我只知道可以通过GOT来获取libc.so的地址,而其他库的地址还不清楚应该怎样取得。于是,我稍微研究了下,在此记录。 首先,通...

0CTF rsa quine

这道题是一道密码学(其实是数学)的题目,因为对相关理论还是不够熟练,在比赛的时候没有能够做出来:( 这两天读了读别人的writeup,基本上明白解法了,在这里记录下具体的思路。 题目的要求是求”quine number”,即:已知RSA公钥\((e, n)\),求\(m\),使得\(m^e\equiv m \bmod n\)。规则很清晰,但实际解决起来还是需要一定的数学知识。 Ok. N...

0CTF writeup

周末参加了今年的第二次CTF,0CTF。与BCTF类似,这次的溢出、逆向题目也是非常有水平的,令人大开眼界。下面是我的部分的writeup。 flaggenerator 这道题的溢出还是比较明显的。在leetify时,一个h字符会被变成1-1三个字符,从而长度变长,造成栈溢出。但这道题有stack canary保护,如果我们栈溢出修改了返回地址,就会触发__stack_chk_fail。...

PHP protocol的坑

LFI(local file inclusion)是一类比较典型的漏洞,不过之前也并没怎么利用过它,主要还是include时往往有许多限制,比如文件的后缀必须是.php。今天偶然发现了PHP伪协议的一个坑,可以得到php文件的内容而不是作为php解释。 这是php://filter/convert.base64_encode/resource=。根据官方文档的描述,他可以像base64_e...

BCTF writeup

周末参加了今年的第一次CTF,BCTF。由于这次CTF是面向国际的,所以题目的质量都比较高,种类也比较单纯,以逆向、溢出为主。这次确实是一个非常难得的锻炼机会,让我们体验到了国际水平CTF的难度。 我们队做出了5道题,我做出了zhongguancun和warmup。在这里记录下我思考的过程。 zhongguancun 是我在周日下午才做出来的。(差距啊……) 我的习惯是,首先通读一遍...

wireshark, burpsuite与SSL

最近在工作中,有时需要用wireshark抓包分析。而有一些通信是被ssl加密了的。虽然说以前在其他队伍的writeup里有见到过如何把server的私钥提供给wireshark来解密,但我这几次试了下还是得不到需要的东西,所以稍微研究了一下。最后的结论是某些cipher是无法仅仅从抓到的包解密的。 首先,来了解一些相关的密码学知识。RSA就不再赘述了,这里主要讲一下Diffie-Hell...

ISG初赛BT

这道题目是去年ISG初赛的一道ARM逆向题,当时的知识储备还不足以解决。但其实稍微了解了下ARM汇编之后就可以做了,虽然说还不熟练,花了较久时间。 我是开始想用IDA的反编译的,但不知怎么回事,对thumb代码的处理总有问题;继而无奈用hopper,然而hopper得到的伪代码还是比较简陋的,而且发现居然会把本应是*ptr+=1这样的反编译为*ptr=1,这个错误太大了……于是最后基本还是...

olympic ctf echof(PWN 300)

2015年第一帖。 以往的CTF的题目质量还是很高的,所以打算稍微练一练这些题目。 这道题目,存在一处format string attack。主要是在strncpy后添加结尾的null字符时,如果长度足够,就会把之后用到的格式字符串地址最低byte设为0,而那里正好指向我们提供的内容,于是接下来的sprintf造成漏洞。 但是,在开始时会先检查我们提供的内容是否包括字符n,这就使得%...

mysql比较字符串忽略结尾的空白

今天学习到一个知识点,在查询时如果比较字符串,会忽略结尾的连续空白,起始的空白不会忽略。于是: select * from users where user='admin '; 会把user='admin'的记录也选出。 这里有比较详细的例子,而且mysql的官方文档也说了: In particular, trailing spaces are significant, whi...