본문 바로가기
.study/pwnable

[포너블 기초] Out-Of-Bounds

by Carry_on 2023. 11. 19.

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