CSAPP3e - x86-64 assembly code analysis - Attack Lab: Level I

本文详细介绍了如何利用缓冲区溢出攻击进行exploit code插入,通过分析Linux下的小端存储模式和函数调用机制,解决Attack Lab的各级挑战。内容涉及汇编代码编写、机器码转换、栈帧操作以及exploit code的定位与构造,旨在深化对x86-64汇编和系统安全的理解。
摘要由CSDN通过智能技术生成

这个lab的目的在于进一步分析汇编码。由于冯氏体系下数据和程序代码都以二进制存储,而且某些不安全的代码可能会在扫描缓冲区时跨越边界,改变一些不应当改变的值,这就给了著名的buffer overflow attack机会。先期知识:最好搞清楚函数调用的机制,弄明白rsp的值和其指向的值到底是什么(可见这篇博客http://www.cnblogs.com/bangerlee/archive/2012/05/22/2508772.html

PART 1要求我使用经典的buffer overflow attack插入我自己的exploit code。首先看level 1(http://csapp.cs.cmu.edu/3e/attacklab.pdf)

void test()
{
int val;
val = getbuf();
printf("No exploit.  Getbuf returned 0x%x\n", val);
}

void touch1()
{
vlevel = 1;       
printf("Touch1!: You called touch1()\n");
validate(1);
exit(0);
}

这一关要求我在主程序调用test后以调用touch1结束。

查看getbuf

00000000004017a8 <getbuf>:
  4017a8:	48 83 ec 28          	sub    $0x28,%rsp
  4017ac:	48 89 e7             	mov    %rsp,%rdi
  4017af:	e8 8c 02 00 00       	callq
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值