zj3t

email: euntaejang@gmail.com

Latest Posts

FTZ-level9

By 오후 8:46 ,









드디어 등장했습니다 BoF(버퍼오버플로우) 거의 시스템 해킹에서 가장 유명한 기법이라고 불리는 해킹 기법입니다. 왜 등장을 안하지 했는데 level9에서 등장을 하네요.

하지만 이번 문제는 굉장히 쉬운 BOF였던 것 같습니다. BOF의 개념만 알고 있으면 풀 수 있을 것입니다. 저도 hackschool의 BOF 왕기초편을 예전에 보고 변수가 스택에 어떻게 어떤 순서로 저장되는지를 배웠습니다. 

저 두번째 그림을 잠깐 설명하자면 bof[10]은 에서 12byte의 범위를 벗어나면 가운데 쓰레기 값이들어있는 약간의 byte,  bof2[10]까지 뒤집어 쓸수 있게 됩니다. 예전에는 변수 사이에 쓰레기 값이 없었는데 gcc 2.06버젼부터 생겼다고 합니다. 

그리고 하나 중요한 것은 char bof[10]이면 10byte인데 왜 12byte의 범위를 벗어나야하냐??
이는 예전에 궁금해서 여러 자료를 찾아봤는데 답은 메모리가 1word 단위로 저장되기 때문입니다. 즉 4byte단위로 저장되기 때문입니다.

여기까지 알면 BOF를 이용하여 답을 찾을 수가 있습니다. 하지만 변수사이의 쓰레기값이 몇byte인지는 gdb를 이용하여 찾을 수가 있지만 여기서는 그럴 수 없기 때문에 일일이 하나씩 너보는 수 밖에 없습니다.

따라서

[level9@ftz level9]$ /usr/bin/bof
It can be overflow : 012345678901go
[level9@ftz level9]$ /usr/bin/bof
It can be overflow : 0123456789012go
[level9@ftz level9]$ /usr/bin/bof
It can be overflow : 01234567890123go
[level9@ftz level9]$ /usr/bin/bof
It can be overflow : 012345678901234go   
[level9@ftz level9]$ /usr/bin/bof
It can be overflow : 0123456789012345go     
Good Skill!
[level10@ftz level9]$ my-pass

쓰레기 값은 3byte였네요~~~









You Might Also Like

0 개의 댓글