완료됨
sendlineafter과 sendafter은 무슨 차이가 있나요?
익스를 하던 중 실수해서 sendafter(b': ',data) 부분을 sendlineafter(b': ',data)로 적게 되었습니다. 그런데 이 경우엔 동작을 안 하더군요. 혹시나 하는 마음에 line feed를 뜻하는 0a를 붙여서 빼보았는데도 마찬가지였습니다. 이 두 함수는 무슨 차이가 있길래 sendafter만 동작하는 건가요?
#pwnable
작성자 정보
답변
1
sendlineafter은 snedafter과 달리 \n(질문자님이 말씀하신 \x0a)을 추가해서 보냅니다.
sendlineafter로 보내면 \n이 추가되어서 정확한 값이 들어가지 않아 제대로 libc base가 구해지지 않았을 것입니다.
추가로 만약 sendlineafter을 이용해 익스하고 싶으시다면
custom(0x500, b'', -1)
lb = u64(p.recvn(6).ljust(8, b'\x00')) - 0x3ebc0a
이런식으로 sendlineafter에 두번째 인자에 빈 문자열을 넣으면 \x0a만 보내지면서 이렇게 libc base를 구할 수 있습니다.