리눅스 GDB
리눅스 운영체제 환경에서의 시스템 해킹을 실습하도록 한다.
운영체제는 칼리리눅스를 사용했다.
32비트 환경 실행 라이브러리를 설치해준다.
sudo apt-get install lib32z1
다음은 칼리 리눅스의 ASLR을 해제해준다.
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
이번 실습은 liveoverflow의 파일을 이용하여 진행한다.
wget https://github.com/LiveOverflow/liveoverflow_youtube/raw/master/0x05_simple_crackme_intro_assembler/license_1
chmod 755 ./license_1
리눅스 GDB를 설치해준다.
sudo apt install gdb -y
설치시 묻는 말에는 모두 yes로 하고 설치해준다.
설치가 끝나면 재시작해준다.
이제 gdb명령어를 입력하면 gdb가 실행된다.
gdb를 사용할 때는
gdb <파일명>
의 형태로 실행한다.
gdb 명령어
인텔형 어셈블리어로 보기
set disassembly-flavor intel
main 함수를 어셈블리어로 확인
disas main
breakpoint 설정
break*(함수)+(번째) / b*(함수)+(번째)
ex) break*main+74
info breakpoint
info breakpoint / info b
run 명령어
run / run (인자값) / r
x 명령어
형식 : x/(개수)(범위)(형식) (메모리주소 or 함수명)
출력 개수 : b(1byte), h(2byte), w(4byte), g(8byte)
출력 범위 : o(8진수), d(10진수), u(부호없는 10진수), x(16진수)
출력 형식 : c(char 형태), s(문자열), l(명령어), c(아스키 코드), f(부동 소수점)
ni 명령어 (다음 코드 진행)
ni
continue 명령어
continue / c
delete 명령어
delete / delete (중단할 지점) / d
quit 명령어
quit / q
license_1 파일을 분석해본다.
gdb ./license_1
set disassembly-flavor intel
disas main

main 함수에 breakpoint를 걸어준다.
b *main
breakpoint 정보는 다음 명령어를 사용한다.
info b
눈에 띄는 부분은 strcmp 부분이다.
+69 부분에 breakpoint를 걸어준다.
b *main+69
아무 인자값이나 넣고 실행해준다.
run 1234
main 함수에 break가 걸리고 c를 눌러 다음 breakpoint에 걸리도록 한다.
함수 실행 전에 0x4006c4 주소에서 무언가를 가져오는 것으로 보인다.
해당 주소에 저장된 값을 확인해준다.
x/10s 0x4006c4

코드로 보이는 값이 있다.
해당 코드를 인자로 넣어주면 성공 메세지가 뜬다.
gdb를 이용하다보면 사용자에게 불친절하다는 느낌이 많이든다.
peda 라는 것을 사용하면 이 gdb를 좀 더 사용자에게 친절하게 만들어줄 수 있다.
https://github.com/longld/peda
다음 주소에 가면 peda에 대한 설명과 설치 방법이 나와있다.
'Security&Hacking > 시스템 해킹' 카테고리의 다른 글
프로토스타 (0) | 2020.05.04 |
---|---|
스택 오버플로우 (0) | 2020.05.03 |
취약점 점검 도구 Nessus (0) | 2020.05.03 |
웹 애플리케이션 취약점 CVE-2017-5638 (0) | 2020.05.03 |
해커스쿨 ftz level20 (macOS) (0) | 2020.01.19 |