- 博客(4)
- 收藏
- 关注
原创 汇编知识/内存结构
栈溢出使用的就是栈(Stack Segment) 内存分段还包括堆(Heap Segment)、数据段(Data Segment),BSS段,以及代码段(Code Segment)段地址寄存器就是用来存储内存分段地址的,其中寄存器 ss 存储函数调用栈(egment)的地址,es、fs、gs 是附加的存储数据段地址的寄存器。现代操作系统内存通常是以分段的形式存放不同类型的信息的。egment)的地址,寄存器 cs 存储代码段(egment)的地址,寄存器 ds 存储数据段(
2023-08-26 20:24:15 60
原创 PWN学习的一些技巧和知识点
原理:填入一段很长的字符串让程序报错,找到报错的地址,这个地址就是整个缓冲区的大小也包括了ebp/rbp那个位置的大小。这个时候可以用 x/x $rsp 来查看报错的地址,注意了如果报错了字节很长,根据小端序只能取后面的8个字符。这是因为64位的结构的内存地址不能大于0x00007FFFFFFFFFFF/6个字节的长度 否则会报错。选择找到了一个很好用的方法利用gdb的cyclic(但是只能用于计算缓冲区不能是精细地址)ELF模块的使用可以便捷找到got和plt的地址计算偏移量。1.计算缓冲区的偏移量。
2023-08-26 17:39:48 359
原创 PWN学习路上的一些疑惑和误区
调用函数的时候也是先将压入ebp 然后esp复制 后esp开辟空间,其中还有一个返回地址的位置,对我的疑问就是在这构建栈的时候的返回地址和payload的返回地址的位置不同。你看一开始那一堆a,他就是开辟的栈空间,一直覆盖了返回地址为gets函数的地址还有下面一些设置好的地址。第二段payload的时候,实际调用前的工作我们已经做完了,参数就在下面两个,返回地址也写好了,所以gets执行完直接就调用了system。这就出现了进制问题 实际上0x92是16*9+2和0x88+4的值是完全不一样的。
2023-08-21 19:51:39 55
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人