[▒] 언어/Assembly
환경 UBUNTU 16.04.07 VMware Workstation 15 Player 개요 Shell Reverse TCP Shellcode란 Remote BOF 기법에서 쓰이는 쉘코드로, Reverse connection 방식을 이용한다. 다른 방식에는 Bind가 있으며 추후에 다룰 예정이다. Reverse connection은 공격자가 미리 서버를 Binding하고 있는 상태에서 피해자가 공격자의 서버에 접속하는 방식이다. 다시 말해, Shell Reverse TCP Shellcode는 피해자가 공격자의 서버에 접속해 공격자가 쉘을 떨어뜨리는 Shellcode이다. Shellcode 제작 소켓을 만든 뒤, 로컬에서 55555포트에 연결하고 STDIN(0), STDOUT(1), STDERR(2)를 소켓..
실행중인 프로그램의 메모리 구조이다. CODE 영역 실행하는 프로그램 코드가 있는 영역 DATA 영역 전역변수(global), 정적변수(static)등이 저장되는 영역이며, 초기화되지 않은 변수는 BSS에 저장된다. 함수 내부에 선언된 static 변수는 프로그램이 실행될 때 공간만 할당되고, 그 함수가 실행될 때 초기화 된다. HEAP 영역 런타임시 동적으로 할당된 변수 값이 있는 영역 공유 라이브러리 영역 프로그램에 사용되는 라이브러리와 관련된 공유 라이브러리 파일이 적재된 영역 STACK 영역 함수의 지역변수, 매개변수가 위치하는 영역 PUSH, POP을 통해 스택의 데이터를 핸들링 할 수 있음 HEAP(힙) 요청한만큼 동적으로 메모리 할당 낮은 주소에서 높은 주소로 증가 런타임 시 크기 결정 ST..
어셈블리어란? 2진수 형태의 기계어를 사람이 알아볼 수 있는 명령어로 표현한 언어 기계어와 1대1 대응 CPU 아키텍쳐마다 어셈블리어가 다름 (Intel x86 ≠ ARM ≠ MIPS) 어셈블리어 = opcode(명령코드) + operand(피연산자) 어셈블리어 (x86) MOV MOV [reg|addr], [imm|reg|mem] MOV EAX, 4 // 4를 EAX에 저장 MOV ESI, ESP // ESP의 값을 ESI에 저장 LEA LEA [reg], [mem] LEA EAX, [EBP+10] // EBP+10에 저장된 주소를 EAX에 저장 LEA ESI, [EAX+4] // EAX+4 주소를 ESI에 저장 CMP CMP [reg|mem], [imm|reg|mem] CMP EAX, 1 // EAX..