Exploit-Exercises Fusion Level02

2014年11月27日 5 条评论

Exploit-Exercises Fusion Level02,引入了DEP以及ASLR,引发溢出的代码位于encrypt_file函数中,当读入字符’E’的时候,首先读入四字节的数据到sz,用于表示接下来会有多少数据要读取,尽管接下来是通过read来读取数据到缓冲区buffer中,但是由于大小完全可控,所以可以溢出buffer缓冲区(128KB),然后覆盖返回地址。这个题还有一个地方就是会对发过去的数据进行加密处理,而且key是随机生成的,但是由于key只在首次生成而[……]

继续阅读

Exploit-Exercises Fusion Level01

2014年11月25日 没有评论

Fusion Level01和Level00是一样的,只是引入了ASLR机制,因为栈是可执行的,这里借助jmp esp来跳转到栈上执行代码。这是一个简单的栈溢出场景,realpath函数的原型为char *realpath(const char *path, char *resolved_path),其将path中保存的路径字符串展开之后复制到resolved_path之中,这里由于resolved数组只有128个字节,而path有1000多个字节,因此这里会发生栈溢出。
Fusion Leve[……]

继续阅读

Exploit-Exercises Fusion Level00

2014年11月24日 没有评论

开始玩Exploit-Exercises的Fusion,这里面引入了一些保护机制的绕过,可以系统的做一下。Fusion Level00算是warmup,是一个简单的栈溢出场景,realpath函数的原型为char *realpath(const char *path, char *resolved_path),其将path中保存的路径字符串展开之后复制到resolved_path之中,这里由于resolved数组只有128个字节,而path有1000多个字节,因此这里会发生栈溢出。
Fusion[……]

继续阅读

XCTF HCTF Reverse Writeup

2014年11月17日 没有评论

HCTF已经过去很久了,整理一下其中两个简单逆向题的Writeup。
0×01. NormalFile
题目给了一张图片,把图片后缀改为zip,然后打开,有两个关键的地方:一个是解压根目录下有一个隐藏的desktop.ini文件,文件内容为“加油。。flag就在你眼前!”,基本没用;另一个是_MACOSX下隐藏了另一张图片。同样将图片的后缀改为zip后打开,基本断定这是一个APK文件,使用十六进制编辑器打开PNG图片文件,搜索IEND标志找到PNG文件末尾,删除PK标志前面所有的数据,就得到AP[……]

继续阅读

分类: CTF 标签: , , ,

SSCTF逆向部分Writeup

2014年11月5日 8 条评论

11月1号~11月2号两天和队友参加了SSCTF,我主要做了一下里面Reverse相关的题目。SSCTF里面逆向相关的题目全是Windows下的CrackMe程序,除了Web分类里面夹杂了一个病毒分析题目外。总的来说不是很难,不过中间有个CrackMe是易语言写的,直接没有接触过这种题,就觉得有点棘手了,不过看了别人的writeup之后觉得还是非常简单的。
0x01. CrackMe1
通过IDA进行静态分析,可以很快找到关键函数位于00401000,F5得到伪代码,大致如下:

1
2
3
4[……]

继续阅读

分类: CTF 标签: , , ,

Redis编程小技巧拾遗

2014年10月9日 2 条评论

最近接触了一下Redis数据,出于好奇看了下它的源码,觉得这是一个值得一读的开源项目。关于Redis的源码分析,已经有很多网友写了各种分析笔记,而且也有相关的书籍《Redis设计与实现》,因此我觉得完整的写一系列的博客就没有必要了,这里主要记录一些个人觉得有意思或者是值得了解的东西(之前面试也有问到一些问题,如果我早一点接触这些东西的话,可以回答的更好)。
如果对Redis源码有兴趣的话,可以先看一看1.0 Beta版的代码,非常的简短,对一些基本的东西有一个大致的了解之后再选一个新的稳定版本的[……]

继续阅读

STL笔记之二叉查找树

2014年9月7日 没有评论

SGI STL的关联容器(map、set、multimap、multiset)底层都是基于红黑树(Red Black Tree,RBT)来实现的,红黑树是一种被广泛使用的二叉查找树(Binary Search Tree,BST),有比较良好的操作效率。
1. 二叉查找树
二叉查找树可提供对数时间的元素插入和访问,其遵循以下规则:任何节点的键值一定大于其左子树中每一个节点的键值,并小于其右子树中每一个节点的键值。不过在极端情况下,当所有节点位于一条链上时,二叉查找树的操作时间为O(N)。二叉查找树[……]

继续阅读

STL笔记之hashtable

2014年8月24日 5 条评论

之前对hash一直存在恐惧感,毕竟没用过……最近在一个组件里面自己实现了一个hashtable,感觉也就这么回事;回头看看书上对hashtable的分析,发现是极其的相似。不过,旧版本的C++标准里面并没有hashtable这个东西,而C++11中引入了相关的容器(std::unordered_set, std::unordered_multiset, std::unordered_map, std::unordered_multimap),所以可以直接使用C++11里面的容器了。
1. has[……]

继续阅读

Srun3000自动登陆脚本

2014年8月10日 没有评论

科学院下面联网都是使用的srun3000,实验室原来是不需要认证就能上网的,最近居然跳出认证页面了。不过,srun3000的客户端体验感觉实在是太差了,经常假死,最近更奇怪的是经常掉线,且掉线之后不能进行自动重连,这造成我服务访问我的小服务器而言简直是不能忍受的。
看了下登陆页面的JS代码,发现协议已经描述的很清楚了,password用的是16位MD5加密后的字符串,其他几个字段没发现有什么特殊意义,对于登陆/注销的返回结果也描述的很清楚。这样的话就可以写个Python脚本循环检查是否能访问外网[……]

继续阅读

分类: Python 标签: ,

STL笔记之slist

2014年7月26日 没有评论

slist是SGI STL里面的一个单向链表,不过这个不属于标准定义,所以,G++下面不能用,另外看了下VS2008里面也没有。不过看到书上这一部分讲解,还是配合SGI的代码做一个了解。一般情况下使用标准的list就可以满足要求了,而且会更加方便,list的分析可以参考STL笔记之list一文。因为slist是单向链表,所以它的迭代器类型为forward_iterator。
1. slist节点设计
链表最基本的结构就是指针域和数据域,对单向链表的节点而言,其拥有一个next指针,指向下一个节点[……]

继续阅读