漏洞分析上学期期末考试题(自用,记录)

这篇博客详细介绍了四个安全漏洞分析问题,涉及缓冲区溢出1和2、格式化字符串漏洞以及Return-to-libc攻击。通过一系列步骤,包括程序分析、地址获取、shellcode利用等,最终成功获取root权限。关键操作包括关闭地址随机化、利用环境变量存放shellcode、修改栈中地址以执行自定义指令。
摘要由CSDN通过智能技术生成

Question 1: 缓冲区溢出1

Step 1: 在root下解压final.tar.gz文件

Step 2: 关闭地址随机化

Step 3: 查看q1是否为set-UID程序

Step 4: 尝试运行q1, 并查看q1.c内容

Step 5: 把shellcode放进环境变量MYSH

Step 6: 编写输出MYSH地址的文件getenvaddr.c, 并编译运行输出结果

获得环境变量MYSH的地址代码如下
获得环境变量MYSH的地址代码
编译原型,得到MYSH的地址为0XBFFFFA74
编译运行,得到MYSH的地址为0XBFFFFA74
Step 7: 将MYSH地址写入, 并运行(由于地址偏移, 实际地址为0xbffffa80), 成功获得rootshell
如果环境变量名的长度和获得环境变量地址的代码文件名长度一致,地址不会发生偏移,由于此处MYSH和getenvaddr.c的长度相差6个字符,所以地址偏移量为6 * 2 = 12

Question 2: 格式化字符串

Step 1: 查看q2是否为set-UID程序

Step 2: 关闭地址随机化

Step 3: 尝试运行q2, 并查看q2.c内容

Step 4: 把shellcode放进环境变量QT

Step 5: 编写输出QT地址的文件g2.c, 并编译运行得到QT地址
g2.c内容如下

可以得知QT地址为0xbffffc4c
值得注意的是, 环境变量名要和获取地址的程序名长度一致,不然地址会发生偏移

Step 6: 使用objdump -R q2查看exit函数的地址,准备将其替换
可以得知exit的地址为0x0804a00c
在这里插入图片描述
Step 7: 查找printf参数在栈中的位置,找到对应字母ASCII码位置,并尝试将exit两个地址写入栈中
在这里插入图片描述
Step 8: 计算写入的位置,进行替换,成功获得rootshell
在这里插入图片描述
在这里插入图片描述

Question 3: 缓冲区溢出2

Step 1: 查看q3是否为set-UID程序
在这里插入图片描述
Step 2: 开启地址随机化
在这里插入图片描述
Step 3: 尝试运行q3, 并查看q3.c内容
在这里插入图片描述
在这里插入图片描述
Step 4: 反汇编查看vul函数的返回地址
可以得知vul函数的返回地址为0x0804851d
在这里插入图片描述
Step 5: 继续反汇编vul函数, 查看memcpy的地址,在该函数之后设断点,查看内存
之所要在memcpy函数之后设断点查看内存,原因在于,根据vul函数的代码可以知道,在执行memcpy(b, argv[2], j)时会溢出,导致j不满足if语句条件,所以需要在此处进行缓冲区溢出,查看内存,查找j的位置,使其满足条件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
由上图可以知道,试探的AAAA距离vul函数返回地址0x0804851d的距离是65个字节,知道了ret的地址(0x0804851d)就可以找到ebp指针指向的地址,即0xbff38af8,且count的地址为0x0804a028
在这里插入图片描述
由上图的初步试探可知,j在距离AAAA起始地址52到56(134~144)
进一步反复试探,得知j的位置在距离AAAA起始地址52字节的位置
Step 6: 构造攻击语句,获得rootshell
由step 5可以知道,只需要将j(距离52字节)替换成满足if语句的58623(十六进制0xfc),且在rip的位置填count地址,使其跳转到esp,进而向下执行shellcode
在这里插入图片描述

Question 4: Return-to-libc

Step 1: 查看q4是否为set-UID程序,并关闭地址随机化

  • 9
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值