这5个实验都可以说是栈溢出然后修改ret地址而进行的一系列攻击操作。对于前三个可以代码注入的实验来说。
1.考虑shellcode的编写地址位置,shellcode写在哪是关键。
(1)如果要溢出的栈帧开辟的足够大,那就写在这个要溢出的栈帧中,然后在调用当前栈帧的rsp作为shellcode的地址。
(2)如果开辟的栈帧空间较小,那么考虑在上一个栈帧写shellcode 根据jmp rsp(这个rsp是上一个栈帧的rsp)或者根据已知一个buf的地址加偏移量作为shellcode的地址。
2.所调用的函数完成时,栈指针会add 栈帧的空间,此时栈指针到返回地址处,最后会执行ret 这个ret是以后能gadget的关键。
3.这个实验的指令有很大的限制,根据图表而对应抓取的指令很少,所以后两个level只能从那些指令里拼凑。
csapp attack lab实验总结
最新推荐文章于 2024-02-02 09:41:27 发布