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")
zer0_1s

浙公网安备 33010602011771号