PWN
文章平均质量分 59
记录一下日常的pwn
请务必早点睡觉
这个作者很懒,什么都没留下…
展开
-
栈溢出ROP——动态链接
当程序采用静态链接的方式时,我们进行ROP是很简单的,因为采用静态链接的程序,其本身就带有了大量的库函数,这样我们可以很方便的找到我们需要的gadget,但是当程序采用动态链接的方式时,其本身并没有这么多gadget,这时我们该如何处理呢。首先,先看下面这张图采用动态链接的程序,会有一个PLT表(代码段)和GOT表(数据段),程序中用到的函数都会在PLT表中存在一个表项,而GOT表中则存放了函数实际的物理地址。当程序调用函数时,执行call指令之后,会首先访问PLT中相应的表项,之后PLT表会立原创 2022-05-04 00:01:46 · 201 阅读 · 0 评论 -
栈溢出的第一步进阶——ROP返回导向编程
前面两次栈溢出只是让我们学习原理,是最简单、最基本的栈溢出问题,一般的pwn题不会这么简单,溢出一次就可以到位。今天我们就做第一步进阶,正式进入ROP。就我目前理解的ROP,就是要通过连续多次栈溢出,利用其原有的gadget(可以叫做代码片段),构造一次系统调用,调用execve()函数,就相当于获得了一个shell。首先我们要知道,系统调用的中断号是0x80,而execve的功能号是11,也就是16进制的0xb。所以在进行系统调用(即执行INT 80H这条语句)之前,我们先要构造出调用execve()原创 2022-05-01 01:01:18 · 709 阅读 · 1 评论 -
第二次简单的栈溢出
当没有一个shell的返回地址时,可以自己构造shell,并将它写入.bss段,因为很可能栈不可执行原创 2022-04-29 23:39:24 · 2946 阅读 · 0 评论 -
记录第一次简单的栈溢出
记录一次最简单的栈溢出pwn题原创 2022-04-29 00:13:52 · 327 阅读 · 0 评论