记事本

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...

ISG初赛library

子曰:温故而知新。最近一段时间没有练习pwn的题目,正好当时ISG初赛的library还一直没研究,于是练习了下。果然是稍微放一放就生疏了…… 比较明显的问题是在register里,有一个format string attack。但这道题对这里还是有一些限制,比如字符串长度只有15,而且一旦调用过一次就不能再调用了。我最初光考虑这个漏洞了,想好久也没有找到好的方法。因为有ASLR,所以必须...

用QEMU模拟ARM环境

之前遇到ARM逆向的入门题,但没有环境只能静态分析,非常慢;而且我觉得边调试边学应该会快一些,于是决定模拟一个ARM环境装linux系统。 首先是QEMU,由于单位电脑系统是RHEL 6,没有qemu-system-arm,于是我不得不编译了一次。我下的是qemu-2.0.2,运行 $ ./configure --target-list="arm-softmmu arm-linux-u...

第一次做ARM逆向的题目

把ARM环境搭好后,就可以动态调试了。之前一道arm逆向的题目,由于没有环境一直只能静态分析,但对arm完全不熟,进行不下去。果然能动态调试就好了。 题目给了一个.c文件和一个.asm文件。我首先编译.c文件,但发现得到的结果用了好多thumb的16 bits的代码,而这和给的.asm文件是不同的。搜索后发现需要指定-marm。于是 $ gcc leg.c -g -marm -o leg...

webhacking.kr challenge 12

这道题给了源代码,发现过滤了union。于是只能从当前表考虑了。 尝试了取no=1,得到guest,说明其对应的no是1。如果表里还存在id=admin的记录,那么那条记录的id要么比1小,要么比1大。于是分别尝试这两种,发现后一种是正确的 http://webhacking.kr/challenge/web/web-12/index.php?no=9)+or+no>1--+

webhacking.kr challenge 10

这道题其实和web-09非常像。 进入页面,发现有提示,知道了column和表的名字。然后试了下直接把参数no取为查询语句,发现还是很多过滤了,而且最后发现似乎返回值只见到了0和1,估计还是盲注。 过滤的地方,主要是空格有问题,但如果把空格换为换行符%0a就可以了。 然后还用昨天的思路,但一直跑不出来……最后搜了答案。相比我的,主要是这次flag有两个,用我昨天做web-09时的那种对...