简介

格式化字符串,也是一种比较常见的漏洞类型。会触发该漏洞的函数很有限。主要就是printf还有sprintffprintf等等c库中print家族的函数。
我们先来看看printf的函数声明

int printf(const char* format,…)

这个是每个学过c语言的人一定会知道、会使用的函数。先是一个字符串指针,它指向的一个format字符串。后面是个数可变的参数。

一般人可能会这么用它

1
2
3
char str[100];
scanf("%s",str);
printf("%s",str);

这个程序没有问题。然后会有一些人为了偷懒会写成这种样子

1
2
3
char str[100];
scanf("%s",str);
printf(str)

这个程序在printf处用了一种偷懒的写法。这看起来是没有什么问题。但是却产生了一个非常严重的漏洞。

千万不要将printf中的format字符串的操纵权交给用户。保证printf函数的第一个参数是不可变的,在程序员的掌握中的。

阅读全文 »

简介

栈溢出,0day漏洞中最简单的一种漏洞。相比起其它漏洞,栈溢出最容易被出现,也最容易利用。是一种非常常见的漏洞。一般如果服务器程序出现了栈溢出的漏洞,那么这台服务器距离被pwn也不远了。

原理

栈溢出的主要产生原因是因为程序对用户输入字符串的长度检查不严格,或者有逻辑漏洞,或者一些菜鸟根本没有进行长度检查而产生的漏洞。相信新手程序员一般都写过这样的代码。

1
2
char dest[10];
scanf("%s",dest);

阅读全文 »

本篇只是为初入逆向工程大坑的新人们指出方向学习,没有实质性的技术。总的来说,基础才是最重要的。

逆向工程入门应该算是所有学习方向中最难的。但是选择了这一方向的请不要放弃,一旦学成,必定会是大神级别的存在。
那么,逆向工程的入门需要学习什么?

1.c语言

阅读全文 »

最近闲着无聊,突发想搞一个自己的博客。于是就有了这个blog。在搭建的过程中也出了许多的问题,不过最后还是搭建完成了。现在我把我搭建的过程记录下来,作为备忘和分享。

0x00

首先是我自己机子的环境介绍以及各种组件介绍
我的机子操作系统为ubuntu 14.04。必要的软件为node.js与git。我的博客部署是在gitcafe上,使用的hexo的框架搭建。使用的主题的Next主题的Mist风格。

阅读全文 »

打了2天的强网杯,虽然一度冲进了前10。可惜最后的时候还是掉出了20名。最后只能无奈打出GG。其中的原因有很多,也不想多说了。
逆向溢出题3连发。我就只会那么多了Orz
先来一道re200

kergen

发送24位的字符串,主要是400B56处的检验函数。检验方法是这样的先是发送字符的第1 10 7 11 2 13 16 17位,中间插入43917202。然后MD5,然后转化成32位字符串形式,然后把前16位字符按ascii码转化成整数字符串。就是一个sprintf(“%d”,char)这样,再去掉其中的所有0,然后转化后的字符串第5至12位和发送字符串第15 12 18 0 6 8 5 3位相同。
再然后字符串的4 9 12 19 位必须是‘-’,然后发送10次,每次不一样。还好字符串最后4位没有要求,随便凑就好<—其实好像是出题的bug了或者是后面降低难度加上的最后4位

阅读全文 »

最近有些c语言初学者想让我给他们看代码。恩,可以啊,有问题去问大神是很好的方法。效率的确比自己琢磨高多了。
这里,我想说一说,一些c语言的方面有关提问和debug的技巧。

首先,请自行debug三遍。大神也是人,问的多了也会烦的。而且身边不可能永远都有个大神更着。所以我想说。先自己去尝试着解决问题。有的时候,只要稍微多看一遍代码,就可以找到问题。所有的IDE都是带有debug功能的,为什么不花一点时间去掌握呢?

阅读全文 »

取了一个非常高大上的名字。但是本人并没有太过深入的了解c语言。也只是一个c语言的初学者。所以请各位大神华丽的无视掉这篇文章。

我学过一点汇编,现在处于逆向工程的起步阶段。在学习汇编和对c语言反编译汇编代码的阅读中的得到一些的一些感悟记录在这里。作为备忘。(反正没人看

好的,现在开始。

阅读全文 »

前天逆向题目的时候,od不知道怎么抽了,竟然没有把strlen函数给标注出来。结果我害得我把strlen的代码给反编译了一遍。看完过后,脑洞大开。
这是汇编的源码:

阅读全文 »

不要吐槽题目的名字,发题目的就是这么取的=,=
某天半夜出现在协会平台里面的Reverse简单题。这几天很忙,就随便随便写写这题的writeup。

界面

界面很简单,两个edit框和一个按钮。直接丢进od。看这紧凑的代码估计是直接用汇编写的。程序很简单,不像高级语言编译的程序,没有一点多余的代码。结合hint:Do you know SendMessage ?很快就可以发现异常的地方。

阅读全文 »

协会平台更新了。放一篇writeup

一道pwn的简单题目,主要练练栈溢出。

STEP1:

nc连接上去之后是3个选项。其中1,2都有字符串的输入。先丢ida分析。
根据一些字符串的输出理清函数的调用关系。先来step1.
提示输入字符串(不限长度的)然后rol13加密。重点是如下的分支跳转。

阅读全文 »