csapp attack lab level4

完成了Part1前三个缓冲区注入代码改变返回地址的实验,现在来看看Part2.因csdn新手,所以上传pdf并不会。直接截图把
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里是介绍部分,大致说明了因为两个原因不能进行代码注入而写shellcode,一个是ASLR栈上地址随机化,一个是NX就是栈没有执行的权限。这样怎么攻击呢?有些聪明的人发现了新的攻击方式,简写ROP就是根据retq这条指令(可以理解pop rip)不断跳转所需要的代码段,最后通过多个ret连接成一个完整的攻击代码段。
就比如讲义举了个例子

void setval_210(unsigned *p)
{ 
  *p = 3347663060U;
}

这个函数反汇编,得到机器码

0000000000400f15 <setval_210>:
400f15: c7 07 d4 48 89 c7   movl $0xc78948d4,(%rdi)
400f1b: c3 retq

其中48 89 c7这个连续的机器码码表示 movq %rax, %rdi,即0x400f15这个地址放入到rip中会执行movq %rax, %rdi,c3表示retq。然后它给了一些指令对应的机器码。
在这里插入图片描述
进入重点,我们来看看phase_4
在这里插入图片描述
意思是可以用这四个指令来完成这个实验,然后它推荐gadgets从start_farm和mid_farm之间找。
当然我有一点不大明白,通过缓冲区溢出第一条指令的地址覆盖返回地址,最后执行的时候是直接把第一条指令放到rip中?然后栈顶指针向上移?执行pop eax,ret. 将cookie值弹出至eax然后栈顶指针在加1?ret后下一条指令回到rip中?(返回地址就是个ret指令 类似pop rip)
我的第一想法
pop %rdi ret
cookie的值
ret
touch2 的地址
我也不知道其他人怎么找的gadget
我是用反汇编整个rtarget然后用管道符然后抓取关键字获取的

在这里插入图片描述
遗憾的没有5f这个指令。

所以只能 popq %rax, retq (58 ) (c3)
cookie的值
movq %rax,%rdi ,ret (48 89 c7) (c3)
touch2 返回地址
在这里插入图片描述
我看了看,选第一给比较靠谱,剩下俩58是字符串的一部分(经实验 第三个可以成功 而中间那个不知道为啥不能成功)
所以popq %rax, retq 为0x4019ab
cookie为0x59b997fa
同理
在这里插入图片描述
movq %rax,%rdi ,ret为 0x4019a2(之间的不行,最下边的可以成功,不知道为啥)
touch2的地址为
在这里插入图片描述
好了万事俱备,编写txt,注意小端序排序


(ab,可以写成cc, a2可以写成c5)
成功!
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CSAPP Proxy Lab是CMU计算机科学系的一项课程作业。该作业旨在通过设计和实现一个基于代理服务器的Web代理,让学生更好地理解计算机网络、操作系统和编程等方面的知识,提高他们的编程能力和问题解决能力。 在这个作业中,学生需要实现一个Web代理程序,该程序需要能够接受来自客户端的HTTP请求,并将请求转发到相应的Web服务器。代理程序需要能够处理HTTP请求的各种类型(GET、POST、PUT等),并且需要能够处理HTTP响应的各种错误码(404、500等)。代理程序还需要支持并发处理多个HTTP请求,以提高系统的效率。 在实现代理程序的过程中,学生需要掌握网络编程、多线程编程、Socket编程等技术,并且需要使用C语言实现代理程序。此外,还需要学生能够理解HTTP协议、代理服务器的工作原理以及Web应用的工作流程等相关知识。 总之,CSAPP Proxy Lab是一项非常有挑战性的作业,需要学生具备扎实的编程基础和网络知识。通过完成该作业,学生可以深入理解计算机网络、操作系统和编程等方面的知识,并提高自己的编程能力和问题解决能力。 ### 回答2: CSAPP Proxy Lab是Carnegie Mellon大学计算机科学的一项项目,旨在帮助学生深入了解计算机网络和代理服务器的工作原理以及如何开发高效的网络应用程序。 Proxy Server是一种应用程序,可以充当网络上的“中转站”,它可以通过代理服务器将客户端请求转发到目标服务器端,并将响应返回给客户端。Proxy Lab的任务是实现一个HTTP代理服务器,它需要能够从客户端接收请求,并将请求转发到目标服务器,然后将响应发送回客户端。 实现Proxy Lab需要掌握网络编程、多线程编程、缓存设计以及HTTP协议等知识。代理服务器需要支持并发处理多个客户端请求,以保证高效的网络传输。为了提高性能,代理服务器还需要对常见的网页、图片和视频进行缓存,避免重复请求。 除了上述技能外,实现Proxy Lab还需要良好的编程能力和团队合作精神。在实现Proxy Lab的过程中,学生需要与队友紧密协作,及时沟通、并发同步,以确保项目的顺利进行。 总之,CSAPP Proxy Lab是一项非常有挑战性的计算机网络应用项目,不仅要求学生充分理解TCP/IP协议、HTTP协议等基本概念,还需要具备优秀的编程和团队协作能力。完成该项目不仅可以提高学生的技能,也可以为日后工作和实际应用打下良好的基础。 ### 回答3: CSAPP Proxy Lab 是一个经典的计算机科学实验,它涵盖了计算机网络知识和系统编程技能。这个实验的主要目标是构建一个基本的 Web 代理服务器,该服务器能够处理 HTTP 请求,并在远程 Web 服务器上代表客户端处理这些请求。 在 Proxy Lab 中,学生需要实现一个基于事件驱动的 Web 代理服务器。该服务器使用 epoll 进行事件处理,可以同时处理多个连接和请求。代理服务器需要支持从客户端接收 HTTP 请求,并解析请求头,将请求发送到远程服务器,接收响应,并将响应发送回客户端。在此过程中,代理服务器需要支持请求过滤和转发,以及缓存功能。 重要的是,学生需要处理一些常见的 Web 代理挑战,例如连接重用、响应缓存、虚拟主机支持和负载均衡。通过完成 Proxy Lab 实验,学生将获得有关计算机系统编程和网络协议的深入知识,并获得实际构建 Web 代理服务器的经验。 总之,CSAPP Proxy Lab 是一个非常重要的实验,它可以帮助学生领会计算机网络和系统编程的核心概念。通过完成这个实验,学生将获得深入的理解和实践经验,从而更好地了解计算机系统和网络技术。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值