sendlineafter과 sendafter은 무슨 차이가 있나요?

익스를 하던 중 실수해서 sendafter(b': ',data) 부분을 sendlineafter(b': ',data)로 적게 되었습니다. 그런데 이 경우엔 동작을 안 하더군요. 혹시나 하는 마음에 line feed를 뜻하는 0a를 붙여서 빼보았는데도 마찬가지였습니다. 이 두 함수는 무슨 차이가 있길래 sendafter만 동작하는 건가요?

#pwnable
작성자 정보
답변 1
c0met
시스템 해킹 입문

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
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기