Layer7 동아리 과제

포너블 1차시 과제

msh1307 2022. 9. 18. 13:29

Dreamhack - basic_exploitation_001

소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
 
 
void alarm_handler() {
    puts("TIME OUT");
    exit(-1);
}
 
 
void initialize() {
    setvbuf(stdin, NULL, _IONBF, 0);
    setvbuf(stdout, NULL, _IONBF, 0);
 
    signal(SIGALRM, alarm_handler);
    alarm(30);
}
 
 
void read_flag() {
    system("cat /flag");
}
 
int main(int argc, char *argv[]) {
 
    char buf[0x80];
 
    initialize();
    
    gets(buf);
 
    return 0;
}
 
 
cs

풀이

gets는 길이 제한이 없어서 bof가 터진다.

32비트짜리다.

0x80채우고 4바이트 sfp 채우고, ret를 read_flag로 덮으면 된다.

read_flag의 주소를 얻었다.

pwnable.kr - bof

https://msh1307.tistory.com/77

 

pwnable.kr bof write-up

문제가 준 링크로 들어가서 소스 코드랑 바이너리 파일을 받을 수 있다. gets로 받아서 key라는 파라미터를 0xcafebabe로 바꾸면 된다. bof 바이너리를 gdb로 확인해보면 cmp에서 ebp+0x8과 0xcafebabe를 비교

msh1307.tistory.com

 

'Layer7 동아리 과제' 카테고리의 다른 글

포너블 3차시 과제  (0) 2022.09.25
포너블 2차시 과제  (0) 2022.09.21
포너블 1차시 실습 라업  (0) 2022.09.14
리버싱 11차시 과제  (0) 2022.08.30
리버싱 10차시 과제  (0) 2022.08.23