wget
문제에서 2개의 파일을 다운로드받으라고 했다. vm환경에서 다운로드할 수 있는 방법은 wget을 이용하면 된다.
wget [옵션]... [URL]...
http://www.incodom.kr/Linux/%EA%B8%B0%EB%B3%B8%EB%AA%85%EB%A0%B9%EC%96%B4/wget
생물정보 전문위키, 인코덤
Wikipedia for Bioinformatics
www.incodom.kr
버퍼 플로우(buffer overflow)
데이터가 지정된 크기의 공간보다 커서 해당 메모리 공간을 벗어 나는 경우 사용한다. 결론적으로 버퍼 공간의 크기보다 큰 데이터를 저장하게 해서 일어나는 오버플로우(Overflow)를 이용한 공격이다.
스택 오버플로우, 힙 오버플로우
출처 : https://cosyp.tistory.com/206
[SystemHacking] 버퍼 오버플로우(BufferOverflow)의 개념과 방법
[버퍼 오버플로우의 개념과 방법] 버퍼 오버플로우는 시스템 해킹의 대표적인 공격 방법 중 하나이다. 버퍼(Buffer)라는 것은 보통 데이터가 저장되는 메모리 공간을 일컫는데 단순히 메인 메모리
cosyp.tistory.com
문제에서 주어진 bof.c 파일을 살펴보자
gets 함수
표준입력으로 들어온 문자열을 개행한 부분 앞까지 짤라서 char* 타입의 문자열로 저장해주고, 자동으로 문자열 맨 끝에 '\0'을 넣어서 문자열을 완성해 줍니다.
출처: https://blockdmask.tistory.com/343
[C언어/C++] gets, puts 문자열 입출력 함수에 대해서.
안녕하세요. BlockDMask 입니다. 오늘은 C언어, C++에서 char*, char[] 스타일의 문자열을 입출력 받는 gets, puts 함수를 알아보겠습니다. 지난시간에는 문자를 다루는 getchar, putchar 두 함수에 대해서 알아
blockdmask.tistory.com
코드 해석
1. overflowme 32바이트를 입력받는다.
2. key가 0xcafebabe이면 sh을 실행한다.
현재 키가 0xdeadbeef이므로 오버플로우를 통해 key를 0xcafebabe로 변경해주어야 한다.
버퍼오버플로우 해킹 기법
예제 코드
#include <stdio.h>
void foo(){
char name[5];
printf("enter name\n");
scanf("%s", name);
printf("you entered %s \n", name);
}
int main(){
foo();
printf("program ends here\n");
return 0;
}
scanf, gets, sprintf,strcpy 모두 BoF 취약점을 가진다.
name의 크기인 5바이트 + EBP 크기 4바이트를 넘어 입력하면 복귀 저장 변수가 덮어쓰여진다.
=> 이를 통해 프로그램의 흐름을 임의로 바꿀 수 있다.
만약 위의 foo() 함수를 실행시키고 싶다면 foo 함수의 주소를 a 8번 적은 후에 적으면 된다.
주소를 알아내는 방법은 디버거를 이용해 어셈블리어로 변환하면 된다.
출처: https://kaspyx.tistory.com/2
버퍼오버플로우(Buffer Overflow) 해킹기법이란??
/* written by kaspy (kaspyx@gmail.com)*/ 정보보안 분야에서 버퍼오버플로우(Buffer Overflow) 해킹기법은 그 역사가 굉장히 오래되었고, 발생했을시에 굉장히 심각한 결함으로 이어질수 있는 취약점입니다.
kaspyx.tistory.com
문제로 돌아와서, bof.c 코드를 어셈블리어로 변환하자.
gdb 디버거를 이용한다.
1. 프로그램 컴파일
2. gdb 디버깅 시작
gdb 명령어 참고 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=mathboy7&logNo=220227929322
gdb 명령어 정리
시스템이나 포너블을 시작할 때, 일반적인 대회 문제들은 (몇몇을 제외한) LOB나 FTZ와 같이 ...
blog.naver.com
이게 att 문법인거같은데 1도 모르겠다. intel 문법으로 바꾸자.
att 문법이 아니라 m1이라 arm문법이다 ..
???

'보안공부 > 시스템 해킹' 카테고리의 다른 글
pwnable 2번: collision (0) | 2023.01.30 |
---|---|
pwnable 1번 : fd (0) | 2023.01.30 |