设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
编程开发讨论区 —— LinuxSir.cn
›
Linux 程序设计专题讨论
›
婷婷:缓冲区溢出源代码
1
2
3
/ 3 页
下一页
返回列表
楼主:
pgtm_love
婷婷:缓冲区溢出源代码
[复制链接]
viper
viper
当前离线
积分
443
IP卡
狗仔卡
发表于 2003-5-12 00:54:16
|
显示全部楼层
The first program, it declared a global char array "shell[]" and then
in the main() function, declared a local char array "shell[1024+300]" which hides the global shell[], what is that for?
回复
支持
反对
使用道具
举报
显身卡
pgtm_love
pgtm_love
当前离线
积分
63
IP卡
狗仔卡
楼主
|
发表于 2003-5-12 12:46:52
|
显示全部楼层
哇,来英文的
shell[] 是存放被攻击程序的缓冲区中被攻击者植入的代码的数组空间,
比如buffer中:
盏底 盏中间 盏顶
NOP BUF shell[]
Next time plese use Chinese, Because we are Chinese!!
(婷婷愿意结识各位有实力的大虾,请多多指教)
回复
支持
反对
使用道具
举报
显身卡
kj501
kj501
当前离线
积分
5317
IP卡
狗仔卡
发表于 2003-5-12 18:42:36
|
显示全部楼层
如果我猜得不错的话,viper兄应该是在国外吧,喜欢用英语回答问题的人,大多数是在国外的。从你上网的时间来看,很有可能是在美国或者加拿大。
回复
支持
反对
使用道具
举报
显身卡
viper
viper
当前离线
积分
443
IP卡
狗仔卡
发表于 2003-5-12 23:38:42
|
显示全部楼层
上次找不到中文输入法,临时用英文凑数,抱歉了!
我是感觉有点奇怪,那个全局变量 shell[] 在 main() 里面不是给局部变量 shell[] 给遮盖起来了么?
这个程序真的会工作吗?我编译了一下,运行的结果是下面这样子的。
在这输出内容里面找不到那段利用缓冲区溢出来调用/bin/sh的代码。
$ ./bf1 100 | od -t x1z
0000000 50 4f 53 54 20 2f 20 48 54 54 50 2f 31 2e 30 0d >POST / HTTP/1.0.<
0000020 0a 43 6f 6e 74 65 6e 74 2d 4c 65 6e 67 74 68 3a >.Content-Length:<
0000040 20 31 30 32 35 2c 20 55 73 65 72 2d 61 67 65 6e > 1025, User-agen<
0000060 74 3a 20 0d 0a 90 90 90 90 90 90 90 90 90 90 90 >t: .............<
0000100 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 >................<
*
0000460 90 90 90 90 90 ef bf ef bf ef bf ef bf ef bf ef >................<
0000500 bf ef bf ef bf ef bf ef bf ef bf ef bf ef bf ef >................<
*
0002060 bf ef bf d6 4c 90 0d 0a >....L...<
0002070
复制代码
还有这一段,既然 esp + (long) offset 是 long 类型的,怎么写到了 *((int*)&buf
) 里面去,然后每次还要做 i+=2。这样的结果是输出里面有一大串的 ef bf 了。
for (i = 256; i < BUFLEN - 3; i += 2)
{
*((int *) &buf[i]) = esp + (long) offset;
shell[ sizeof(shell)-1 ] = 0;
}
复制代码
回复
支持
反对
使用道具
举报
显身卡
viper
viper
当前离线
积分
443
IP卡
狗仔卡
发表于 2003-5-13 02:23:10
|
显示全部楼层
kj501 贴的那一大段比较好,让我认真读读。
其实我不是喜欢用英文的,实在是不好意思没有安装输入法。
回复
支持
反对
使用道具
举报
显身卡
kj501
kj501
当前离线
积分
5317
IP卡
狗仔卡
发表于 2003-5-13 07:39:51
|
显示全部楼层
那段文章是我从linuxforum上找来的,只是不懂汇编,无法问津了。
回复
支持
反对
使用道具
举报
显身卡
pgtm_love
pgtm_love
当前离线
积分
63
IP卡
狗仔卡
楼主
|
发表于 2003-5-13 11:52:12
|
显示全部楼层
请教
你编译这代码后,有去攻击别的机子吗?就是跟别的机子建立通信了吗,还有,你这手数据是在你自己的机子还是被攻击的机子收集到的?用什么入侵检测工具?还是直接从LINUX的系统日志显示?
回复
支持
反对
使用道具
举报
显身卡
pipi7290
pipi7290
当前离线
积分
8
IP卡
狗仔卡
发表于 2003-5-13 18:31:04
|
显示全部楼层
:p 那个叫viper的老弟,可千万不要在装啦,人家kj501老兄都吧你认为是在国外啦,你要是在装大家都回以为你是洋鬼子了,拜托!!!!
回复
支持
反对
使用道具
举报
显身卡
pgtm_love
pgtm_love
当前离线
积分
63
IP卡
狗仔卡
楼主
|
发表于 2003-5-13 20:56:48
|
显示全部楼层
你别管了
你管人家是不是在国外,他只要有水平,我们能跟人家探讨问题共同进步就行了嘛?人家也没说他是在外国,只是喜欢半夜上网而已。你专心搞你的数据吧,还有,论文快点写,没时间了,哼!事管得不少,还爱罗嗦:mad:
回复
支持
反对
使用道具
举报
显身卡
viper
viper
当前离线
积分
443
IP卡
狗仔卡
发表于 2003-5-13 22:43:22
|
显示全部楼层
我编译了以后,就直接运行了一下。看这个程序的代码,它只是向标准输出写一些数据,然后运行 nc 把他输出的数据送到被攻击的运行 linuxconf 的机器上。这样,我把他输出的数据用 od 检查一下,发现里面没有供给所用的代码。
按我理解,缓冲区溢出的道理就是我们向一个存在这种漏洞的程序(远程的服务器也好,本地的其他程序也好)输入一些数据,数据的长度比那些存在漏洞的程序内部在堆栈中分配的buffer长度大。当有漏洞的程序不管三七二十一把这些数据全都copy到他在自己堆栈中分配的buffer里面的时候,就把堆栈搞坏了。通过精心设计我们输入给那个程序的数据(计算好地址,在内嵌一些代码),就导致有漏洞的程序转而执行我们给她的代码,从而让我们得到我们本来在那台机器上没有的控制权。
回复
支持
反对
使用道具
举报
显身卡
下一页 »
1
2
3
/ 3 页
下一页
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
硬件设备 Linux 驱动
网络技术\网络安全讨论
Java 程序设计开发讨论
SuSE Linux
LFS(LinuxfromScratch)
开源软件专题讨论
shell进阶应用、shell编程
Linux发行版 Turbolinux专题
Linux 基础讨论区(新手速成)
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表