pwntools / recvline() 관련 질문

[질문1]

p.recvline()으로 받는 경우, 사진처럼 받아오는데요.

왜 맨 앞에 a(초록색 화살표)가 생기는지 궁금합니다.

그리고 recvline은 개행문자를 만날 때 까지 받아오는 것으로 알고 있는데, 개행문자가 순서상으로 파란색 \x00 까지 맞나요 ?

그리고 p.recvline()[:-1] 을 하는것이 개행문자 까지 받아온 후 개행문자를 제거한다고 이해되는데 맞을까요?


[질문2]
libc_start_main_xx = u64(p.recvline()[:-1] + b'\x00'*2)

만약, libc_start_main_xx = 0x7fe13e4d6c87 이라면.. 라이브러리 주소는 앞에 0000으로 시작하므로 직관적으로 보면, 아래 처럼 만들려면
0x00007fe13e4d6c87

1)번처럼 해야할 것 같은데 왜 2)처럼 해야할까요?

  1. b'\x00'*2 + p.recvline()[:-1]
  2. p.recvline()[:-1] + b'\x00'*2
#pwnable
작성자 정보
답변 1
avatar
wyv3rn
무플 방지 위원회장
  1. 아마 출력해주는 부분에서 0xa가 받아졌을건데 이 부분을 처리하지 않으신 것 같습니다. 보통 recvline()[:-1] 로 처리해주시면 됩니다.
  2. 1번도 그렇고 2번도 그렇고 착각하시는게
    스택에 0x1122334455667788과 같으면 실제로는 8877665544332211과 같이 데이터가 입력되어있는 것입니다. 이를 고려하시면 이해되실 것 같습니다.
2024.02.27. 22:39
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기