Security/System Security

[System Security] 명령어 정리

잉숭 2021. 5. 11. 15:19

리눅스에서 Intel 문법으로 변환

(gdb) set disassembly-flavor intel

 

Section Header 정보를 본다

readelf -S sum-s

 

hello 파일의 dynamic dependancies를 list한다

ldd hello

 

write 함수에 breakpoint 걸기

(gdb) b write

 

BP 나올때까지 run

(gdb) r

 

현재 명령어의 호출을 backtrace

(gdb) bt

 

해당 함수의 disassemble 코드를 출력

(gdb) disass main	// main함수 disassemble
(gdb) disass *0x00110416	// 해당 위치 disassemble
(gdb) disass *write+28	// write 함수에서 28바이트 위치 disassemble

 

BP에서 한줄 더 탐색

(gdb) si

 

동작중인 프로그램의 프로세스 맵 확인

(gdb) shell ps -a
(gdb) shell cat /proc/####/maps

 

[vdso] 라이브러리를 메모리 덤프해서 오브젝트 파일 만들기

dump memory linux-gate.vdso 0x___ 0x___

 

오브젝트 파일의 심볼 테이블을 출력

objdump -T linux-gate.vdso

 

오브젝트 파일을 disassemble

objdump -d --start-address=0xffffe400 --stop-address=0xffffe414 linux-gate.vdso

 

x(덤프뜨기)/##(어떤 포맷으로 몇 개)

x/2s 0x80ae428 // 해당 주소에서 string 2개 출력
x/x $esp // esp 레지스터의 값을 hex로 1개 출력

 

Canary 없이, 성가신 instruction 없이, 코드 세그먼트에 write 권한을 추가하기 위한 링킹 옵션 추가

gcc -o asmshell2 asmshell.c -fno-stack-protector -mpreferred-stack-boundary=2 -static -W1,--omagic

 

Canary 없이, 성가신 instruction 없이, stack에 exec 권한을 추가하기 위한 링킹 옵션 추가

gcc -o shelltest3 shelltest.c -fno-stack-protector -mpreferred-stack-boundary=2 -static -W1,-z,stackexec

 

섹션 헤더 확인하기

readelf -S asmshell1