整个lab包括五个phase,1、2、3利用代码注入攻击ctarget,4、5利用ROP技术进行攻击rtarget。同Bomb lab一样,可以先将ctarget和rtarget反汇编为汇编代码,便于后续的查找。值得提醒的是,建议使用Ununtu18及以下系统,貌似程序在高版本上会出现异常。 1.phase_1 phase1要求在getbuf返回时不是在test中恢复执行,而是跳转...
本文将从实验流程、实验内容和实验收获三个方面回答关于Attacklab实验的问题。 一、实验流程 Attacklab实验包括三个实验阶段:Phase1、Phase2和Phase3。 Phase1:Buffer Lab Phase1是Attacklab实验的入门阶段,目的是让学生了解栈缓冲区溢出的原理和利用方式。学生需要分析给定的源代码,在栈上分配合适的空间,并使用合适的...
# 使用hex2raw进行处理 将16进制数据 转换成对应的字符串, 这里不建议在生成raw文件 加.txt后缀 csapp@5da1ca66de8a:/workspaces/csapp/lab3/attack_lab$ ./hex2raw < exploit-phase1.txt > exploit-raw-phase1 # 注入字符串 csapp@5da1ca66de8a:/workspaces/csapp/lab3/attack_lab$ ./ctarget -q ...
和phase1一样直接返回肯定不行,所以我们要写一段汇编代码,要求程序修改rdi的值,然后再去执行touch2; movq $0x59b997fa,%rdi pushq $0x4017ec #将touch2的首地址push到栈上,rsp自动会指向它 retq #返回后,程序会将pc修改成rsp指定的位置,即跳转到touch2的首地址 将上述代码编译后再反汇编,得到下图形式; g...
CSAPP:3e Attacklab实验记录 阅读实验手册,开始做Attacklab. CTARGET Phase 1 第一个Attack Phase要求调用存在的函数touch1.这个简单,自需要将touch1的首地址覆盖栈中的返回地址就行。 首先使用gdb调试ctarget,反汇编出getbuf的汇编代码: 可以发现这里分配了0x28(十进制是40)Bytes的栈帧。由于栈是低地址方向增长...
此lab针对的是原书3.10.3和3.10.4的内容,利用缓冲区溢出改变原系统的执行路径,实现系统入侵,有点黑客的意思了。通过这个lab可以对系统漏洞有更直观的认识,并且了解系统入侵的基本思想和思路,也能对程序的机器级表示有更加深入的理解。 Phase1 通过插入字符串,让getbuf函数返回后执行touch1函数。这个比较简单,我们知...
包含此实验室实例所需的4字节签名的文本文件。(通过一些Phase需要用到的字符串) 4.farm.c rtarget实例中出现的gadget场的源代码。您可以编译(使用标志-Og)并反汇编它来查找gadget。 5.hex2raw 生成字节序列的实用程序。参见实验讲义中的文档。(Lab提供给我们的把16进制数转二进制字符串的程序) ...
3.cookie.txt 包含此实验室实例所需的4字节签名的文本文件。(通过一些Phase需要用到的字符串) 4.farm.c rtarget实例中出现的gadget场的源代码。您可以编译(使用标志-Og)并反汇编它来查找gadget。 5.hex2raw 生成字节序列的实用程序。参见实验讲义中的文档。(Lab提供给我们的把16进制数转二进制字符串的程序...
lab分为5个Phase: Phase 1 到 3 需要利用代码注入攻击ctarget,劫持test()的返回地址,最终调用touch1到touch33个函数。 Phase 4 到 5 需要利用ROP攻击rtarget,劫持test()的返回地址,重复Phase 2 和 Phase 3的动作,分别调用touch2和touch3两个函数.
包含此实验室实例所需的4字节签名的文本文件。(通过一些Phase需要用到的字符串) 4.farm.c rtarget实例中出现的gadget场的源代码。您可以编译(使用标志-Og)并反汇编它来查找gadget。 5.hex2raw 生成字节序列的实用程序。参见实验讲义中的文档。(Lab提供给我们的把16进制数转二进制字符串的程序) ...