OOB(Out Of Bounds)
OOB는 배열의 요소를 참조할 떄때, 인덱스 값이 음수이거나 배열의 길이를 벗어날 때 발생한다.
개발자가 인데긋의 범위에 대한 검사를 명시적으로 프로그래밍하지 않을 때 발생한다.
공격자가 인덱스의 값을 임으로 설정할 수 있다면, 배열의 주소로부터 특정 오프셋에 있는 메모리 값을 참조할 수 있다.
드림핵의 예제코드를 보면 win의 값이 31337이 되면 플래그가 출력되는 것을 볼 수 있다.
따라서 OOB를 이용해서 win을 31337로 덮어씌우면 될 것이다.
win의 주소는 0x2c이고
buf배열의 요소의 크기는 4바이트 이므로
입력할 idx값을 0x2c/4 = 11이다.
11을 입력하면 플래그가 출력된다.
'.study > pwnable' 카테고리의 다른 글
[포너블 기초] _IO_FILE (0) | 2023.11.26 |
---|---|
[포너블 기초] RTL (0) | 2023.11.12 |
[포너블 기초] GOT Overwrite, RTL Chaining (0) | 2023.11.12 |
[포너블 기초]Shell Craft, Lazy Binding (0) | 2023.10.25 |
[포너블 기초] Egg Shell, NX-Bit (0) | 2023.10.23 |