Try Attack91

gcc 메모리보호옵션 gcc메모리 보호옵션 -m32 32bit로 컴파일 -fstack-protector(-all) ssp 보호기법 켜기 -fno-stack-protector ssp 보호기법 끄기 -W,-Wall 모호한 코딩에 경고를 보냄 -S 어셈블리 파일 생성 -std=[c표준] 지정한 c표준으로 컴파일 -l[라이브러리] 해당 라이브러리를 링크 -shared 공유 라이브러리를 우선 링크 -static 정적 라이브러리를 우선 링크 -s 심볼 테이블 제거 -Wl,-z,relro,-z,now Full Relro 보호기법 적용 -e [name] 시작 심볼을 name심볼로 사용 -M 심볼들의 정보르 자세히 출력 -fno-builtin 단독으로 링크(표준lib 링크 X) -mpreferred-stack-boundary=2 더미 없애기.. 2018. 5. 18.
gcc 사용방법 보호되어 있는 글 입니다. 2018. 5. 18.
함수의 호출규약 1. 함수 호출 규약(Calling Convention) ▶ 파라미터를 전달하는 방법에 대한 약속을 정의한 것이다. 2. 32비트 모드 (1) __cdecl 방식(C declaration) [1] C와 C++(가변인자)의 기본 호출규약이다. [2] 인자(argument)는 스택을 사용해서 오른쪽에서 왼쪽 순서로 전달한다. [3] callee(호출자)가 스택포인터를 정리한다. (c언어에서는 내부적으로, assembly에서는 직접) [4] 함수이름 앞에 _(언더바) 기호가 붙는다. (2) __stdcall 방식(Standard Call) [1] Win32 API[Windows OS의 System call]의 기본 호출 규약이다. [2] __cdecl방식과 동일하게 인자(argument)는 스택을 사용해서 오.. 2018. 5. 18.
gdb debugging (gdb) break *main+0 Breakpoint 1 at 0x804840b - main의 기준주소 + 1번째 주소를 breakpoint로 지정 (gdb) break *0x0804840c Breakpoint 2 at 0x804840c - 위와 같은 뜻이지만 main의 주소에 1을 직접더해서 사용 (gdb) info break Num Type Disp Enb Address What 1 breakpoint keep y 0x0804840b 2 breakpoint keep y 0x0804840c - breakpoint 되어있는 목록 확인 (gdb) del 2 (gdb) info break Num Type Disp Enb Address What 1 breakpoint keep y 0x0804840b - de.. 2018. 5. 17.
gdbgui install $ sudo apt-get install git [설치형태] git clone git://"github주소".git ex)$ git clone git://github.com/cs01/gdbgui.git $ sudo apt install python-pip $ pip install gdbgui --upgrade $ gdbgui 2018. 5. 17.
gdb disassemble - c 원본소스 - - 실행파일 exe를 gdb로 main 함수를 disassemble 한 것 - 1) push ebp => 이전 함수의 기준주소를 stack에 저장 - ebp란? extended base pointer로 기준주소를 의미한다. 2) mov ebp, esp => 현재 stack의 top pointer를 기준주소로 저장 (main함수의 기준주소를 ebp에 저장) - 모든 함수의 시작에는 1) 과 2)가 있다. 3) sub esp, 0x8 => stack memory의 공간을 8byte만큼 확보한다. 4) mov DWORD PTR [ebp-0x4], 0xa => 0xa(10진수 10)를 ebp-0x4 [3)에서 확보한 스택포인터]에 4byte정수를 넣는다. - DWORD PTR은 4byte 정.. 2018. 5. 16.
gdb 표기문법 1. (gdb) set disassembly-flavor intel 2. (gdb) set disassembly-flavor att 1번은 인텔문법, 2번은 AT&T문법 원하는 문법으로 디스어셈블한 파일을 볼 수 있다. 그러나 이것은 일시적인 방법이고 $ echo "set disassembly-flavor intel" > ~/.gdbinit => echo 는 출력한다. => "set disassembly-flavor intel" 내용을 => ~ 홈디렉토리의 .gdbinit => gdb 프로그램이 실행될 때 홈 디렉토리에서 /.gdbinit를 읽어오며 => ~/.gdbinit의 경우 gdb실행 시 초기 명령어를 저장한다. 2018. 5. 16.