2007年4月7日星期六
2007年4月3日星期二
Bufbomb可爱的缓冲区溢出
多的时间里,我经常遇到每一个前辈都犯过的错误--缓冲区溢出。每一次溢出都
是不同的,调试也是苦难的,数不清的BUG潜伏在我的程序里,我无能为力。。。
可是今天,缓冲区溢出成了我的任务@_@。CS:APP
<http://csapp.cs.cmu.edu/>的第三章的课后题3.38,给了我一个机会,第一次去
尝试有意的缓冲区溢出,全新的挑战啊!
getbuf的代码摘要如下:
int getbuf()
{
char buf[12];
getxs(buf);
return 1;
}
:-) objdump -d a.out
080484ae <getbuf>:
80484ae: 55 push %ebp
80484af: 89 e5 mov %esp,%ebp
80484b1: 83 ec 18 sub $0x18,%esp
80484b4: 8d 45 f4 lea 0xfffffff4(%ebp),%eax
80484b7: 89 04 24 mov %eax,(%esp)
80484ba: e8 25 ff ff ff call 80483e4 <getxs>
80484bf: b8 01 00 00 00 mov $0x1,%eax
80484c4: c9 leave
80484c5: c3 ret
分析getbuf的栈帧结构:
返回地址.1
%ebp.1
%eax ;buf首地址
返回地址.2
%ebp.2
可以看到,我们的输入必须在%eax往上(地址增加)的栈上,我们的功能代码应该是
*mov $0xdeadbeef, %eax*
*push $ip(返回地址1)*
* ret
最后为了保护%ebp.1和跳转到%eax执行代码
我们的输入应该是这样的形式
功能代码的机器码 00(填充12字节的剩余部分) %ebp %eax的地址
*
2007年3月30日星期五
四月是收获的季节?
This April,I will go back to my study after three years ago I left .I will do my best so that the next April will be a harvest season for me!I believe...
God bless me!
Amen 阿弥陀佛 安拉赞美我
@_@...
2007年3月28日星期三
本欲乘风归去
身边有好多的同学都在使用;我寒假前注册了一个帐号,发了一个短文,在网站里
里外外逛了一大圈,确实不错:功能很多,给我们用户的权限也很大,使着确实挺
爽。唯一的难处,太难折腾了,有些麻烦。说来很奇怪,我不怕折腾,但是偏偏不
喜欢网络上的折腾:我是个急性子,懒得等。。。放假回来以后,就没有怎么去
看;今天突然想起来了,一去看,OMG,居然有19个回复,我高兴坏了,心想这人
气真NB啊!一点击,我崩溃了,基本都是广告,多数还是国外的,郁闷。。。
我不想折腾密码啥的,还是回来用blogger吧,慢点儿我也忍了。另外一个blog不打算用了,
id实在是难听,我自己怎 么能想这么个名字呢?纳闷儿。。。