반응형
5점짜리 bof 문제이군요. bof에 대해서 공부하고 오세요 !
위 주소로 들어가서 파일을 다운 받고 C 코드를 보면
핵심은 key == 0xcafababe 가 되도록 하는 것입니다.
func 함수로 인자가 0xdeadbeef가 넘어가고 그것이 변수 key가 받고 있으므로,
bof 취약점을 이용해 deadbeef를 cafebabe로 바꾸어주면 될 것 같습니다.
여기서 gets 함수를 보고 빠르게 bof라는 것을 알아채야 되는데…
gets는 온전히 user input에 관련한 함수이므로 이 함수를 그대로 사용하면 오버플로우취약점에 노출되게 되는 것이다. 이와 관련해서 strcpy, strcat … 등 여러 함수들도 취약하다는 것을 알았으면 한다.
우선, overflow 이 변수에 값을 입력하고 메모리를 한 번 봅시다.
서브함수인 func 메모리를 열고
브레이크는 어셈블리 명령어 cmp(비교) 부분인 +40부분에 겁니다.
(A를 32개 만큼 입력해주었습니다.)
메모리를 확인해보니 변수의 시작주소와 deadbeef 라는 문자열을 볼 수 있습니다.
즉, 저희는 그 사이 공간이
20바이트를 조금만 더 채워주고 cafebabe라는 문자열로 바꿔주기만 하면
미션완료입니다. 생각보다 gdb를 보고 하니 결과도 빨리 생각해내게 되네요.
반응형
'[ ★ ]Study > War Game' 카테고리의 다른 글
[Toddler's Bottle] pwnable.kr passcode 풀이 (2) | 2017.08.17 |
---|---|
[Toddler's Bottle] pwnable.kr flag (0) | 2017.08.17 |
[Toddler's Bottle] pwnable.kr collision (0) | 2017.08.16 |
[Toddler's Bottle] pwnable.kr fd 풀이 (0) | 2017.08.16 |
pwnable.kr peda 사용법 (0) | 2017.08.14 |
댓글