main
함수
get_shell
함수가 있으니 rao
정도 하면 될 것 같다
보호 기법이 거의 안 걸려있다
코드 분석을 해보면
Size
를 입력Size-1
만큼Data
입력
v5
에 입력을 받는데, 256
만큼 할당되어있고, size
가 257
이상을 입력받으면 프로그램이 종료된다
여기서 주의해야할 점은 size-1
만큼의 버퍼를 입력받는다는 것이다
size>=257
로 필터링 하므로, "음수 필터링을 하지 않는다"
if)
size
<-0 (필터링에 걸리지 않음)
data
-<size-1
만큼 입력 ==-1
만큼 입력을 받도록 함
컴퓨터에서 -1은 보수 표현으로 엄청나게 큰 수로 취급된다
size
에 0
을, Data
에 bof
와 get_shell
함수 주소를 넣어서 rao
를 하면 된다
처음에는 안전해보였는데, -1
이 핵심이였다
rao
는 쉬워서 5분?도 안걸려서 풀었다
단순하지만 개념을 점검하기 좋은 문제였다고 생각한다