티스토리 뷰
쉘코딩 챌에서 pread
, preadv
, pread64
로 표준입력(write
- 표준출력) 받으려면 실패하고 오직 readv
로만 가능하다.
write
도 마찬가지. pread
, preadv
, pread64
는 파일 읽기 할때만 쓰자.
sendfile
함수를 쓰면 파일 오픈한 상태에서 read
안하고 바로 출력 가능하다
#include <sys/sendfile.h>
ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count);
openat
의 첫번째 인자는 -1
주면 된다.
pay += shellcraft.pushstr("/flag")
pay += shellcraft.openat(-1, 'rsp', 0)
pay += shellcraft.pread(3, 'rsp', 0x100, 0)
pay += 'push rdx\n'
pay += 'push rsi'
pay += shellcraft.writev(1, 'rsp', 0x1)
p.send(asm(pay))
이런느낌으로 사용
댓글