완료됨
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를 구할 수 있습니다.

2025.02.28. 16:43