목록분류 전체보기 (62)
농소
ADD : 덧셈 어셈블에서는 c와는 다르게 +연산자를 사용하지 않고, add명령어를 통해 덧셈을 한다.mov를 통해 레이블 num의 메모리값에 10을 넣어주고 레지스터 eax에 20을 넣어준다.그 후 add명령어를 통해 ( [num] = [num] + eax ) 덧셈을 해준다.즉, 결과는 10 + 20 = 30이 나오게된다. SUB : 뺄셈 add와 마찬가지로 매커니즘은 동일하고 +연산이 -연산의 차이밖에 없다.위 코드는 좀전에 했던 코드의 add 명령어를 sub로 변경한 코드이다즉 [num] = [num] - eax => -10의 결과값이 나온다. MUL : 곱셈 - MUL( Unsigned ) 부호가 없는 곱셈 처리 - IMUL( Signed ) 부호가 있는 곱셈 처리 1). MUL 만약 2바이트를 ..
1. 주소 Vs 메모리 c언어 -> 메모리에 직접 접근하여 사용함자바, 파이썬, .. -> 메모리에 직접 접근(x) - 포인터: 메모리에 대한 직접 접근이 가능 - 어셈블리: 변수를 선언해서 사용하지 않는다. / **메모리를 직접 사용을 함. 앞으로 계속 메모리 직접 사용 ex) segment .data , segment .text ..등 메모리를 직접 씀 1). 주소 - 메모리상의 위치 - 파일 오프셋과 동일한 의미 (메모리에서는 주소 파일에서는 오프셋이라고 부름) - 정수 2). 메모리 - 데이터가 들어있는 실제 메모리 [ ] = 해당위치상의 메모리(값)를 나타냄 strin..
ELF 구조 linux 32bit의 경우 하나의 process 사용하는 메모리 4gb( 가상메모리 ) 1gb / 3gb 나눔1gb = 커널사용 우리는 커널에 접근x 접근한다면 해킹3gb= 운영체제를 위한 / 3gb를 나눠서 사용 = [ text영역( =Segment or Page or Section ) , data영역 , stack영역 ] 3gb의 메모리 영역중 0번지 주소부터 일정영역 까지는 사용x 1). data segment - 읽기/쓰기 가능한 메모리 영역 / 실행x ex) rw- - 프로그램 실행에 필요한 데이터 - 초기화된 데이터 ex) int var =10; 2). bss segment - 읽기/쓰기 가능한 메모리 영역..
컴파일러 란? - 컴퓨터가 이해할 수 있게 고급언어를 기계어로 변환해주는 작업 (쉬운 환경) - IDE (Intergrated Development Enviroment) : 통합 개발 환경 - IDE = 컴파일러 + 편집기 + 디버거 + 등등.. - ex) Visual Studio, Eclipse (불편한 환경) 현재 linux에서 사용하는것들 - compiler : GCC(컴파일러) GCC = hello.c [ .c hello.i -> hello.s -> hello.o 우선 간단한 hello, world를 표현하는 코드를 작성후 그 파일을 hello.c라고 치겠다#> gcc -o hello hello.c 라고 입력을 하면 소스파일이 컴파일과정을 거쳐서 실행파일로 변환이 되는데이 변환과정을 자세히 보기 ..
우선 이번에 시스템 해킹을 공부하기 위해 필요한 os를 설치하고 실습환경을 설정해 보겠습니다. 사용할 실습 VersionOS : Red Hat Linux 6.2 VersionVM : VMware 12.5 pro Version 실습할 도구- GCC ( C 컴파일러 )- GAS ( GNU Assembler ) = 오래되서 사용x , 대신에 NASM ( Netwired ASM ) 을 설치해 사용한다 AT&T,INTEL문법 사용 ( 어셈블러 )- GDB ( 디버거 ) - 바이너리 분석도구 어셈블리언어를 연습하기 위해 NASM을 설치 1. NASM 설치 http://www.nasm.us/pub/nasm/releasebuilds/0.99.05/ 로 들어가서 .gz파일을 복사한 후 < wget 명령어를 통해 gz파일..
지난 글과 마찬가지로 이번엔 POST방식으로 보낸후에 응답값을 보내보겠다. get방식과 코드는 같고 방식만 get에서 post로 변경했다 전 글과 다른점은 post요청을 받으므로 doget()메소드가 아닌 dopost()메소드를 통해 응답하므로 이곳에 구현한다. get방식과는 다르게 name=value값이 헤더가 아닌 바디에 있으므로 url에 입력한 값이 노출이 되지않는다.
간단하게 get방식으로 데이터 전달하는 것을 테스트 해본다form태그에 상대경로로 /gettype 설정하였고 메소드는 당연히 get방식으로 설정 input 태그에는 아이디와 비밀번호를 입력하는 칸을 만들고 submit으로 제출하는식으로 구현 웹 브라우저에 구현한 데로 사용자에게 입력을 요구하고 있다. 상대방이 id,pwd를 입력 후 get방식 httpservletrequest로 요청 값을 doGet()메소드를 통해 받고 httpservletresponse로 응답을 처리 실행결과에서 주소 줄의 url을 보면 name=value값이 바디에 들어가 있지 않고 헤더에 들어가 있으므로 입력한 값이 전부 노출이 된다. 위 상황을 헤더는 이런식으로 표현 GET /test/gettype?id=value&pwd=valu..
GET방식 1. 질의 문자열이 요청정보 헤더의 URI에 추가되어 전송2. 질의 문자열의 내용이 외부에 노출3. 질의 문자열의 길이가 제한적4. 질의 문자열의 인코딩/디코딩 작업이 필요없으므로 처리속도가 빠르다5. 질의 문자열을 직접 URI에 추가가능 POST방식 1. 전달되는 질의 문자열이 요청정보의 몸체에 포함되어 전달2. 질의 문자열이 외부에 노출되지 않음3. 질의 문자열의 길이 제한이 없다4. 태그를 통해서만 요청가능 GET방식은 서버의 데이터를 단순히 가져오는 작업에 사용 POST방식은 서버의 데이터 값 수정이나 상태변화를 일으키는 작업에 사용 --------------------------------------------------------- GET 방식 한글 처리 소스 인코딩태그 사이에 사용..
서블릿 웹서버에서 동작하는 애플리케이션을 구현할 때 사용 클라이언트에게 서비스 하기위한 목적웹서버에서 서비스되는 페이지 웹서버가 클라이언트에게 서비스하는 단위 = 웹 애플리케이션 클라이언트 요청 ->(url정보) -> 서버 url 정보 ex) http://123.123.12x.xx : 8080 / asd / index.jsp Http인터넷에서 웹 서버와 사용자의 인터넷 브라우저 사이에 문서를 전송하기 위해 사용하는 프로토콜 123.123.12x.xx 웹 애플리케이션을 서비스하는 웹서버가 설치된 주소 만약 서비스 요청하는 클라이언트 주소가 서버와 같은 경우 컴퓨터 주소 대신 localhost 또는 127.0.0.1로 표시 이런 경우 네트워크에서 컴퓨터를 찾는 과정이 생략되어 오프라인 상태에서도 테스트 가능..
1.JDK설치하기 자바 프로그램을 개발할려면 자바에서 제공하는 기본 API가 필요하고소스 작성 후 에는 바이트 코드로 변환하기 위한 컴파일러가 필요하고 이를 실행해주는 자바 가상머신(JVM)도 필요합니다 이 세가지 모두 Java SE에 포함되어있습니다. JDK는 자바 소스를 컴파일하고 실행하기 위한 도구인데요JDK는 오라클 www.oracle.com 에서 다운을 받으시면 됩니다. 홈페이지에 들어가시면 위 그림과 같이 New Downloads에 Java SE 9.0.1을 클릭합니다. 버전은 항시 업데이트 되기때문에 다를수도 있습니다. JDK 클릭 Accept License Agreement 를 클릭후 자신의 OS에 맞게 설치하시면 됩니다. 저는 window10 사용중 이므로 window버전을 설치할게요 N..