sample.c #include int myfunc(int a, int b) { char buf[10] = "abcd"; return a + b; } int main(int argc, char *argv[])//caller { int c = 10; c = myfunc(1, 2);//callee return 0; } - 함수 호출 후에는 call 명령어가 오고, call (myfunc함수에 해당하는 이름)이 저장되어 있음 à push eip - main 함수의 myfunc() 호출 후 다음 문장은 return 0; 이므로, EIP값이 자동으로 return 0;을 하게끔 바뀌므로, 해당 값을 myfunc() 프레임의 RET공간에 저장함 - RET에 저장 후 jmp를 수행하면 함수 프롤로그가 실행되고, pus..
ㅇ 레지스터 : CPU내에 있는 기억장소 ㄴ ESP(Stack Pointer) : 현재 스택의 위치가 어디인지 갖고 있음 ㄴ EIP(Instruction Pointer) : CPU가 실행될 명령어가 어디 있는지 해당 주소를 갖고 있음 (다음번 실행할 명령어의 위치) ㄴ EBP(Base Pointer) : 각 함수프레임의 기준 위치 (함수 호출이 끝나면 해당 위치로 리셋해줘야 함) ㄴ EAX~EDX : 산술, 논리 연산의 결과값을 임시로 보관하는 레지스터 EAX : 함수 리턴값 저장 ㄴ ESI, EDI : 반복, 문자열 ㄴ 상태 레지스터 : 비교, 점프, 반복 ㅇ 함수프레임, 프롤로그, 에필로그 프롤로그 : 함수가 호출되었을 때 RET, SFP 영역을 만드는 작업 에필로그 : 함수 실행 완료 시 함수가 할..
ㅇ 어셈블리어 ㄴ 어셈블리어 표현방식 : AT&T, Intel AT&T : 리눅스 - OPCODE 원본, 사본 - cp file1 file2 //file1을 file2로 복사함 Intel : 윈도우 - OPCODE 사본, 원본 ㄴ add, sub x = x + y; add x, y //x와 y를 더해서 x에 넣음 x = x - y; sub x, y //x - y를 해서 x에 넣음 ㄴ mov, lea, (movl, movw, movb) à 둘 다 복사 명령어지만, mov는 주소에 해당하는 값을 lea는 주소값을 가져옴 (movl, movw, movb) à 각 옮길 값의 사이즈를 4, 2, 1 바이트 만큼 복사함 x = y; mov x, y //y에 있는값을 x로 복사(이동) ***à 목적지가 어떤 피연사인..
Nikto 란? Nikto는 리눅스/유닉스 계열 시스템에 설치되는 웹 서버나 웹 기반의 응용 프로그램의 취약성을 점검할 수 있는 프로그램이다. Nikto 사용? 기본적으로 스캔 명령어는 다음과 같다. # nikto -h 프로그램의 옵션은 다음과 같다. 본론 스캔을 하다 보면 다음과 같은 문장이 반복해서 뜨는 것을 보았다. Potentially interesting archive/cert file found. 알아보니 Nikto에서 404 -> 200 갑지를 발견하지 못할경우 오탐지가 발생하여 생긴다고 한다. 스캔 결과의 대부분 항목이 다음과 같이 애플리케이션의 취약한 파일을 참조하는 경우 애플리케이션이 실제로 파일을 전달하지 않고 모든 요청에 대해 상태 코드 200을 반환하도록 구성되어 있음을 의미한다...