Array Indexing

htARTE (HackTricks AWS Red Team Expert)를 통해 **제로**부터 **히어로**까지 AWS 해킹을 배우세요!

HackTricks를 지원하는 다른 방법:

기본 정보

이 범주에는 배열의 색인 처리 오류로 인해 특정 데이터를 덮어쓸 수 있는 취약점이 모두 포함됩니다. 취약점의 조건에 완전히 의존하기 때문에 이는 특정 방법론이 없는 매우 넓은 범주입니다.

그러나 여기에서 몇 가지 좋은 예시를 찾을 수 있습니다:

  • 2개의 충돌하는 배열이 있으며, 데이터가 저장된 주소를 나타내는 하나와 해당 데이터의 크기를 나타내는 다른 배열이 있습니다. 한 배열에서 다른 배열로 덮어쓸 수 있어 임의의 주소를 크기로 지정할 수 있습니다. 이를 통해 free 함수의 주소를 GOT 테이블에 쓰고, 그 주소를 system의 주소로 덮어쓰고, /bin/sh가 있는 메모리에서 free를 호출할 수 있습니다.

  • 64비트, nx 없음. 크기를 덮어쓰면 모든 것이 더블 숫자로 사용되고 가장 작은 것부터 가장 큰 것까지 정렬되는 버퍼 오버플로우가 발생하여 해당 요구 사항을 충족하는 셸코드를 작성해야 합니다. 캐너리는 위치에서 이동되어서는 안 되며, 마지막으로 RIP를 ret 주소로 덮어쓰고, 이전 요구 사항을 충족하는 주소로 가장 큰 주소를 새로운 주소로 지정하여 스택의 시작 지점으로 점프할 수 있습니다.

  • 64비트, relro 없음, 캐너리 없음, nx 없음, pie 없음. 스택의 배열에서 off-by-one이 있어 포인터를 제어할 수 있어 배열의 숫자의 합을 off-by-one으로 덮어쓴 주소에 쓸 수 있습니다. 스택을 제어하여 GOT exit 주소가 pop rdi; ret로 덮어쓰이고, 스택에 main 주소가 추가됩니다 (main으로 다시 루핑됨). puts를 사용하여 GOT에 있는 주소를 누설하는 ROP 체인을 사용하고 (exit이 호출되어 pop rdi; ret을 호출하므로 스택에서 이 체인을 실행합니다). 마지막으로 ret2lib를 실행하는 새로운 ROP 체인을 사용합니다.

  • 32비트, relro 없음, 캐너리 없음, nx, pie. libc 및 힙의 주소를 스택에서 누출하기 위해 나쁜 색인을 악용합니다. 버퍼 오버플로우를 악용하여 system('/bin/sh')를 호출하는 ret2lib를 수행합니다 (힙 주소는 체크를 우회하기 위해 필요합니다).

Last updated