완료됨
자식 프로세스 떴다고 뜨는데 interactive()가 안되서 쉘 획득이 안됩니다...

image.png

tcache poisoning을 통해 stdout overwrite -> FSOP(trigger by printf)를 통해 system("/bin/sh")을 실행시키고자 하였습니다. 사진과 같이 vfork.. 문구가 뜨면서 쉘이 실행되는 것 같은데 왼쪽에 쉘 표시(interactive()동작 안함)가 뜨지 않습니다. 이런 경우는 처음이라 혹시 어디서 잘못된 건지 쉘 획득한게 맞는지 질문 드립니다. 코드 일부와 조작된 stdout 구조체 첨부하겠습니다.

    FSOP = FSOP_struct(
        flags=u64(b"\x01\x01\x01\x01;sh\x00"),
        lock=stdout_lock,
        _wide_data=fake_fsop_struct - 0x10,
        _markers=system,
        _unused2=p32(0x0) + p64(0x0) + p64(fake_fsop_struct - 0x8),
        vtable=lb + libc.symbols["_IO_wfile_jumps"] - 0x20,
        _mode=0xFFFFFFFF
    )

image.png

#pwnable
작성자 정보
더 깊이 있는 답변이 필요할 때
드림핵 팀과 멘토에게 직접 문의해 보세요!
답변 1
avatar
fow
대표 업적 없음
avatar
fow
대표 업적 없음

안녕하세요,
먼저 문제 해결 축하드립니다!

올려주신 내용만을 토대로 생각해볼 때는 아마 사용된 FSOP가 문제였던 것으로 보여지는데요,
아마 flags에 들어간 sh 뒤에 ;(semicolon)이 붙지 않아 system()에서 실행하는 과정에서 문제가 발생했던 것으로 보입니다.

혹시 해당 부분이 아닌 다른 부분이 문제였다면, 편하게 공유해주시면 감사드리겠습니다.

드림핵을 이용해주셔서 감사합니다!

2025.09.09. 17:12