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