pwn知识-ORW

在CTF赛事中,越来越多的题目启用了沙箱,会禁用掉execve函数,从而达到让我们构造不出来system('/bin/sh\x00')getshell的效果,这个时候我们就可以利用orw来解题。

原理

见名知意,ORW与三个函数有关:openreadwrite,他们的作用分别是:

1
2
3
open打开想要读取的文件
read将打开的文件内容读取
write将读取到的内容输出

攻击方式

在知晓大概的流程之后,就得设置寄存器的参数,我们需要知道函数对应参数代表的含义:
open(file,oflag),read(fd,buf,n_bytes),write(fd,buf,n_bytes)
open
file就是我们要读取的文件名,oflag指的是我们以何种方式打开文件,如只读,只写,可读可写。一般我们设置oflag=0,默认打开,只读即可。
readwrite,这两个大同小异。
fd是文件描述符,通过设置它来决定函数的操作,通常设置为0,表示标准输入,但是在ORW中,我们需要设置readfd参数为3,表示从文件中读取,则buf中存放的就是读入文件内容的地址,n_bytes就是能够存入多少字节的数据。writefd设置为1,输出到终端。