728x90
CTF에서의 리버싱
- 프로그램 구조 분석
- 분석을 바탕으로한 코드 재구현
- 역연산을 통한 플래그 획득
-> 플래그 획득을 위해서는 프로그램의 구조를 분석하고 이해하는 과정이 필수적입니다.
결국 리버스엔지니어링은 많이 분석할수록 실력이 늡니다.
다른 분야와는 달리 기법을 배운다기 보다는 새로운 유형을 접한다는 방식으로 공부합니다.
해킹 기반 지식
Linux - 해킹을 하기 위해선 linux를 다룰 수 있어야 합니다.
Programming - 적어도 1개의 언어는 배우는 것이 많은 도움이 될 겁니다.
특히 c언어는 시스템 해킹을 하기 위해선 필수로 알아야 합니다.
소스코드 컴파일
#include <stdio.h>
int main()
{
printf("Hello World!!");
return 0;
}
위와 같은 "Hello World" 코드를 짜고 컴파일 하게 됐을때, 아래와 같이 처리 됩니다.
Helloworld.c => Helloworld.i => Helloworld.s => helloworld.o => Helloworld
소스코드 전처리 후 소스 어셈블리 소스 오브젝트 파일 실행파일
위와 같이 우분투에서 "gcc -v --save-temps -o '실행파일 이름' '소스파일 이름'"을 입력하시게 되면 컴파일 되는 모든 파일이 위의 사진과 같이 모두 저장이 됩니다.
그래서 위와 같이 어셈블리 소스 파일인 "helloworld.s"파일을 열어 보았을때 어셈으로 작성되어 있는 것을 확인할 수 있습니다.
디스어셈블
위와 같이 "objdump -d 'elf 파일 이름' -M intel"를 적게 되면
이런식으로 확인 할수 있습니다.
알아야할것
728x90
'해킹 > 리버싱' 카테고리의 다른 글
[리버싱] 스택프레임이란..? (0) | 2021.11.07 |
---|---|
[리버싱] rev-basic-4~6 write up (0) | 2021.07.14 |
[리버싱] rev-basic-0~3 write up (0) | 2021.07.14 |
[해킹] 레지스터 (0) | 2021.07.10 |
[해킹] 해킹의 시작 (0) | 2021.07.10 |