CSAPP Lab (03)-Attack Lab
本文记录了CSAPP配套实验——Attack Lab的详情WriteUp
-
运行环境:
- Ubuntu 22.04
任务
类似于Bomb Lab,需要明白控制和过程在机器级代码中的表现形式和运行过程。
实验分为两个部分:
- Code Injection Attack (代码注入攻击)——phase1-3,对应文件
ctarget
- Return-Oriented-Programming(面向返回编程)——phase4-5,对应文件
rtarget
知识储备
- 请先阅读CSAPP 3.10部分的内容
- 在官网下载阅读
attack.pdf
- 注:
cookie.txt
是每个CMU学生的一个ID,自学者默认ID为0x59b997fa
A:hex2raw的使用
hex2raw接收字节序列格式的输入,如"30 31 32 33 34 35"代表输入数字"012345",支持/**/
形式的注释,假设我们现在已经写好一个字节序列格式的文本文件exploit.txt
,我们可以用如下几种方式向ctarget
或rtarget
输入该序列。
unix> cat exploit.txt | ./hex2raw | ./ctarget /* 使用pipes */
unix> ./hex2raw < exploit.txt > exploit_raw.txt
unix> ./ctarget < exploit_raw.txt /* I/O重定向 */
---------或---------
unix> ./hex2raw < exploit.txt > exploit_raw.txt
unix> ./ctarget -i exploit_raw.txt -q /* -i表示文件输入,-q表示脱机使用 */
unix> ./hex2raw < exploit.txt > out /* 转换为二进制文件out */
B:生成字节码Byte Codes
假设我们事先已生成汇编代码example.s
,可以以如下方式得到机器码
unix> gcc -c example.s
unix> objdump -d example.o > example.d
在文件example.d
即可看见对应的机器码。
WriteUp
Part1:Code Injection Attack
Phase1
Phase2
Phase3
Part2:Return-Oriented Programming
Phase4
Phase5
参考
https://zhuanlan.zhihu.com/p/36807783
https://github.com/luy-0/CS-APP-LABs/blob/master/Lab-Answer_HB/Lab3-AttackLab/L3-Attack-Note.md
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 CaddiesNew's Blog!
评论