티스토리 뷰

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

이런느낌으로 사용

댓글
댓글쓰기 폼
공지사항
Total
9,666
Today
6
Yesterday
26
TAG
more
«   2022/09   »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  
글 보관함