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)처럼 해야할까요?
- b'\x00'*2 + p.recvline()[:-1]
- p.recvline()[:-1] + b'\x00'*2
#pwnable
작성자 정보
답변
1
wyv3rn
무플 방지 위원회장
- 아마 출력해주는 부분에서 0xa가 받아졌을건데 이 부분을 처리하지 않으신 것 같습니다. 보통 recvline()[:-1] 로 처리해주시면 됩니다.
- 1번도 그렇고 2번도 그렇고 착각하시는게
스택에 0x1122334455667788과 같으면 실제로는 8877665544332211과 같이 데이터가 입력되어있는 것입니다. 이를 고려하시면 이해되실 것 같습니다.