완료됨
시스템 문제를 풀면서 메모리 맵을 어떻게 그리는게 효율적일까요?
개인마다 그리는 방식이 다르다는 것을 알고 있습니다. 다만, 다른분들은 어떻게 메모리 맵을 드로잉하시는지, 경험적으로 어떻게 그리는게 나중에 좋았다를 알고 싶어서 드리는 질의입니다.
시스템 해킹 공부를 하다보면 프로그램의 취약점을 가시화하면 이해가 더 쉽기 때문에 간단한 메모리 맵을 그리는 경우가 많습니다.
예를 들자면, 32 bit 간단한 스택 문제 같은 경우 아래와 같이 세로 테이블을 그릴 수 있습니다.
세로
+------------------+
+....0x00000000....+
+------------------+
+.Lower Addresses..+
+------------------+
+ Buffer (0x20) +
+------------------+
+ SFP +
+------------------+
+ RET +
+------------------+
+.Higher addresses.+
+------------------+
+....0xFFFFFFFF....+
+------------------+
만약 위와 같은 경우, buffer(0x20) + sfp(0x4) + ret (0x4) 를 버퍼에 덮을 수 있으면 RET 변경할 수 있다는걸 간단히 가시화 했습니다. 위 테이블의 경우 주소를 위를 낮은 주소로 잡고 아래는 높은 주소로 잡았습니다. 그런데 어떤 문서는 위를 높은 주소로 높고 아래는 낮은 주소로 그리는 경우도 있습니다. 또 어떤 분들은 옆으로 그리기도 하는것 같습니다.
가로
...[buf][sfp][ret]...
시스템 문제를 풀면서 메모리 맵을 어떻게 그리는게 효율적일까요? 그리고 개인마다 그리는 습관?이 커널/힙 문제를 풀면서 도움이되거나 방해가 될 수 있을까요?
자유로운 의견을 듣고 싶습니다. :)
#시스템해킹
#pwnable
#시스템
#memory_map
작성자 정보