본문 바로가기

정보보안80

정보보안2 7차시 gdb 할 때 기본적인 disp 항목disp $esp disp $ebp disp $eip disp /i $eipdisp /4xw $esp-- 저번차시에 하다가 급하게 끝냈던 내용을 다시 되짚으며 처음부터 시작  소스코드 : int a=1, int b=2;0x080484b0 :     sub    $0x8,%esp→ 변수 2개를 선언하기 위해 공간을 만들었다 (int니까 4byte 2개)확인해보니 %ebp 0xffffd458 / %esp 0xffffd450 로 8만큼 %esp가 낮아짐( Centos7에서는 printf까지 다섯개 분량의 공간을 미리 만들고 mov로 복사 sub    $0x14,%esp 실습환경인 Rocky8에서는 두 개만 만들고 나중에 push로 넣는다 )0x080484b3 :     mo.. 2024. 5. 25.
정보보안2 6차시 (gdb) show disable-randomization=> randomization 설정 확인. on이면 메모리 주소가 바뀌지 않음 / off는 계속 메모리 주소가 바뀜 POP 명령어- at&t : popl 피연산자- intel :  pop 피연산자- 스택의 $ESP가 가리키는 곳의 값을 피연산자에 저장한다- 스택에서 값을 뺄 때 사용하는 명령어- 스택에 값이 pop되면 $ESP 값이 x86 기준으로 32bit 증가 (스택은 높은 주소에서 시작하므로) 자꾸 헷갈리지만, gdb로 $esp의 위치가 아니라 값을 확인할 때는 disp가 아니라(gdb) x/4xw $esp 0xffffd43c:     0x00000002      0x00000001      0x12345678      0x00000000 이.. 2024. 5. 19.
정보보안2 5차시 printf 포맷스트링 %s 문자열 %c 문자1개 %f 실수 (double, float) ex) %0.2f => 12.12 소숫점 2자리까지 표기 %u 부호 없는 정수 %d 부호 있는 정수 (2진 보수 방식 등)%x 16진수 소문자 표기 %X 16진수 대문자 표기 printf("|%20c|\n", 'A');=> 20칸에 맞추어 문자 A를 출력 printf("|%10.2f|\n", 13.540000);=> 10칸에 맞추고 소숫점은 2자리까지 출력. 13.54 signed와 unsignedsigned : 양수와 정수 모두 사용 가능 ( -128 ~ 127 까지)unsigned : 양수만 사용 가능 ( 0 ~ 255까지. 음수를 넣으면 쓰레기값이 셋팅된다고 함)  복습) 어셈블러 종류 - GAS : 리눅스, .. 2024. 5. 18.
정보보안2 4차시 변수는 스택에 저장되는데,높은 주소에서 낮은 주소로 ↓ 채워지게 된다. (LIFO, 선입후출=후입선출) sizeof(변수)=> 함수가 아니라 연산자이다. 변수의 크기를 확인.  printf("%c\n", 'A');=> 'A' 이부분은 리터럴 상수라고 한다. 변수에 변하지 않는 데이터를 넣는것. char txt[20]; => 배열. 동일한 자료형으로, 연속된 공간 20개를 메모리에 확보txt 는 &가 없어도 배열의 시작지점 주소를 반환한다. 리눅스에서 ASLR 주소 랜덤화 기능이 기본적으로 활성화되어 있으므로,같은 변수를 초기화 하여도 실행할 때마다 주소값이 달라진다. 변수 주소 출력&aslr: 0xff89aabc &aslr: 0xffc3341c &aslr: 0xff8357bc ... ASLR on/off.. 2024. 5. 12.