Security&Hacking/시스템 해킹

리눅스 GDB

Dior2ky 2020. 5. 4. 12:36
반응형

리눅스 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