Pwn学习笔记(2)--ret_2_text_or_shellcode
# pwn 学习笔记(2)
# 1. 三种常见的寄存器:
ax 寄存器:通用寄存器,可用于存放多种数据
bp 寄存器:存放的是栈帧的栈底地址
sp 寄存器:存放的是栈顶的地址
# 2. 栈帧与栈工作的简介:
栈帧是存储函数的一些信息的地方,栈帧存储有函数的局部变量,传递给子函数的实际参数,父函数的地址以及上一个栈帧栈底的地址,大致情况如下:
在函数调用的过程中,首先会讲 bp 寄存器的值进行压栈,以方便在恢复的时候恢复栈底寄存器的值,再之后,会按顺序将局部变量压栈,最后是子函数的实际参数,会按照先入栈的后出栈,从最后一个实际参数先入栈再到第一个实际参数,比如函数 a (int a , int b),压栈的方式就是先压栈 b 的实际参数,再压栈 a 的实际参数,当这些压栈完成之后,就可以压栈父函数调用子函数的那条语句的下一条语句的地址,紧接着,可以压栈当前栈帧的栈底地址了。
具体的汇编语言实现就不多做解释了,因为我这里只是简述。
# 3. 缓冲区溢出漏洞:
缓冲区溢出楼哦对那个的本质就是向定长的缓冲区中写入了超长的数据,造成了写入的数据覆盖了其他合法的内存 ...
Pwn学习笔记(1)--前置知识
# pwn 学习笔记(1)
# (1)pwn 简介:
以下来自于百度百科:”Pwn”是一个黑客语法的俚语词,是指攻破设备或者系统发音类似“砰”,对黑客而言,这就是成功实施黑客攻击的声音——砰的一声,被“黑”的电脑或手机就被你操纵了 。
# (2)几个简单的名词:
exploit:用于攻击的脚本与方案
payload:攻击载荷,是对目标进程劫持控制流的数据
shellcode:调用攻击目标的shell代码,常见的有bash和sh
# (3)C 源代码到可执行文件:
如下图所示:
C源代码经过编译成为汇编代码,汇编代码再经过汇编成为机器码,即生成一个elf(二进制)目标文件,进行链接后成为elf可执行文件:
# (4) 可执行文件:
1.Windows:PE
可执行程序 .exe
动态链接库 .dll
静态链接库 .lib
2.Linux:ELF
可执行程序 .out
动态链接库 .so
静态链接库 .a
# (5)ELF 文件信息:
(1)段视图:在内存中程序加载到内存成为一个进程后,进行读写、执行权限划分的视图;节视图:是一个elf文 ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
# Quick Start
# Create a new post
1$ hexo new "My New Post"
More info: Writing
# Run server
1$ hexo server
More info: Server
# Generate static files
1$ hexo generate
More info: Generating
# Deploy to remote sites
1$ hexo deploy
More info: Deployment







