pwn 中的函数 | 持续更新

write函数

ssize_t write(int fd, const void *buf, size_t n)

  • fd:文件描述符;write一般为1,由屏幕输出显示
  • buf:指定的缓冲区,即指针,指向一段内存单元;比如GOT表项
  • nbyte:要写入文件指定的字节数,64位一般指针8字节,32位是4字节。
write(1,GOT地址,8|4),显示GOT对应函数的实际地址
x64传参:rsi=p64(0x1),rdi=p64(GOT),rdx=p64(0x8)

read函数

ssize_t read (int fd, void *buf, size_t count)

  • fd:文件描述符;read 为0,由键盘写入
  • buf:指定的缓冲区,即指针,指向一段内存单元;比如向.bss段写入'/bin/sh\x00'
  • nbyte:要写入文件指定的字节数

execve()函数

int execve(const char * filename,char * const argv[ ],char * const envp[ ]);
execve()用来执行参数filename字符串所代表的文件路径,第二个参数是利用指针数组来传递给执行文件,并且需要以空指针(NULL)结束,最后一个参数则为传递给执行文件的新环境变量数组。

执行execve("/bin/sh",null,null),等价于system("/bin/sh")

posted @ 2020-08-02 18:05  zer0_1s  阅读(460)  评论(0)    收藏  举报