网络安全学习笔记(8)

网络安全学习笔记之栈调用

栈溢出是网络安全学习的基础,在整个学习体系中非常重要,这里先学习栈的结构以及调用。

首先是汇编调试,这里列出一些基本调试语句,调试采用的是gdb调试,环境是ubuntu16.04,这里不用Windows是因为Windows有太多的干扰信息。

首先编写c文件,新建空白文档,命名为.c文件,然后打开命令行:gcc -g test.c -o test
用于调试程序,-g表示gdb调试,-o 表示存储在test中,运行后生成test运行文件,然后gdb test进入gdb调试,设置断点
break main 在main函数设置断点
run将程序运行起来
list用于显示代码
disassemble用于显示代码对应的汇编代码
nexti用于单步运行
print $esp用于输出某个寄存器的值
i r 用于显示所有的寄存器的值
x/20xw 地址 用于显示这一地址以上20个地址的值,20表示显示的个数,
stepi 在遇到call跳转到其他函数时,通过stepi跳转
这里也有一个文章
gdb调试命令大全

这里关于一些汇编的基础知识,包括栈在汇编中是怎样的,这一部分知识主要在这两篇博客中:
栈帧详解
函数调用过程中的栈帧结构及其变化
通过这两篇博客,就能对栈结构在汇编中的表示以及程序如何运行有一定的了解。
首先是gdb工具的安装,这里推荐加上另一个gdb调试工具peda,安装方法如下:
安装pwntools

sudo apt-get install libffi-dev
sudo apt-get install libssl-dev
sudo apt-get install python
sudo apt-get install python-pip
sudo pip install pwntools

安装peda

git clone https://github.com/longld/peda.git ~/peda
echo "source ~/peda/peda.py" >> ~/.gdbinit

64位的机子还需要安装32位的库

sudo apt install libc6-dev-i386
sudo apt-get install lib32z1

如图
在这里插入图片描述
最上面是各个寄存器的状态,在寄存器的
在了解了这些后,可以开始查看栈调用,首先是一次调用,根据汇编代码画出栈的分布图,然后是二次调用,查看调用要对照汇编代码一步一步调试,不要心急。这里附上一段

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值