자유게시판
addr_leak 할때 문법

예시
1번 : stack_leak = u64(r.recvuntil("\x7f").ljust(8, b"\x00"))
2번 : stack_leak = u64(r.recv(8) + b'\x00\x00')

블로그에 있는 내용인데

'''
u64를 사용할땐 주로 ljust를 사용하는데 64bit 에서 libc 값은 6byte 이기 때문이다 ljust를 사용하여 8byte로 만든 뒤 언패킹하자 !
'''

질문 1 : 1번은 "0x7f" 까지 받고 ljust 가 8만큼 정렬하는데 빈칸은 \x00정리한다. 0x7fabcd12345678 주소가 있으면 abcd12345678 이라 가정하면 어떤식으로 정리하는지가 궁금합니다.

질문 2: recv(8) 은 8바이트를 받아오고 뒤에 \x00\x00를 하는데 결국 1번이랑 같은거 같은데 \x00 은 NULL 로 알고있는데 왜 \x00 을 하는지가 궁금합니다.

질문 3 : 조금 궁금하긴한데 블로그 에서 공부하다보면 rjust 는 사용을 잘안하던데 그 이유도 궁금합니다.

작성자 정보
익명 (58.123)
Lv.15 (^오^) 5개월 전 출력된 값 중 특정 부분을 읽어오는 코드며 당연히 어떻게 출력되느냐에 따라 읽어오는 부분이 달라지게 됩니다. 일반적으로는 lic = u64(p.recvuntil(b'\x7f')[-6:].ljust(8,b'\x00')) 이 코드가 범용적으로 쓰이게 됩니다. ASLR이 적용되어 있을 경우 라이브러리 주소는 항상 0x00007f~~~로 시작하기 때문에 7f부터 6만큼 값을 받아들이고 뒤에 널바이트를 추가해서 u64() 함수로 int 값 형식으로 만들어 저장합니다. 이건 이해했습니다. \x00 으로하는이유가 궁금합니다.!