목록펭귄's directory (180)
한땀한땀 정성들인 코딩
1학년 새내기때 처음으로 배운 c언어, hello world를 처음으로 출력했던 그 마음가짐으로 시작 !!**해킹과 공격의 예술 책이 너무 어려워서 따로 배우는 중, 왜 32bit 기준인지 nasm어셈블러 section .data message: db 'hello, world', 0 section .text global _start _start: #라벨 표시 , 시작위치나 시작주소를 찾는 데 쓰인다. 함수와 비슷한 개념 mov rax,4 mov rdi,1 mov rsi,message mov rdx,13 syscall mov rax,1 xor rdi,rdi syscall
책에 나온예제랑 환경이 차이가 커서 이해하는데 어려움이 많다 . **심각하다....32bit cpu를 기준으로 설명하는데 내 컴은 64bit이고 gdb버젼이 달라 명령어가 안 먹히는게 있다. 대략적으로는 이해가 되지만 지금 shell code작성법에서 막혀버렸다.이해가 도무지 안되는 현상이 지속..shell code는 진짜 해커로의 기본이라 생각하는데 작성을 할줄 모르면 .;; 답이없다. 64bit 환경에서 shell code 만드는 방법을 알아야 하는데... 해결책. 1. 64bit 환경에서의 어셀블리를 배운다.!!
실습!! void func(int a, int b){ int c; c = a + b; } int main(void){ func(1,2); return 0; } gdb 명령어 ( 디버깅 )set disassembly intel # intel문법으로 변환 **실행할 때 마다 intel문법으로 되는게 안된다.. disas 함수명 #함수의 어셈블리어 objdump같은.. break 주소 #프로세서의 명령이 멈출곳 i r 레지스터명 #레지스터의 상태
프로세스가 실행이 되면 세그먼트 단위로 메모리에 저장한다.세그먼트란? 메모리의 일정한 영역 가상메모리 ,paging ,세그먼트 어드레싱( 세그먼트 블록값+ 오프셋으로 접근 ) 프로그램을 실행하게 되면 주 기억 저장장치 (메모리ram)에 공간(세그먼트)을 할당 받는다.#이때 부족한 메모리공간을 효율적으로 활용하기 위한 기술이 가상메모리,paging 프로세서 - 프로그램이 실행되고 있는 상태 ( 메모리에 있는 상태 ) 하나의 프로세서의 세그먼트는1. 코드2. 데이터3. 스택세그먼트로 나뉨
어셈블리어 문법은 intel방식, AT&T 방식으로 나뉜다.intel방식이 직관적으로 이해가 편한다. 데이터 이동mov dest, src #dest로 src 이동lea dest,src #dest로 src의 주소가 이동push src #스택에 src 추가 ESP가 1증가pop dest #스택에서 dest 추출 ESP 1감소 산술 연산add dest,src #dest에 src+sub dest,src #dest에 src-inc op #op에 +1dec op #op에 -1cmp op1,op2 #op1-op2 논리 연산neg op #2의 보수not op #비트 반전 and dest,src # or dest,src #xor dest,src # #and, or, xor 논리 연산자 1,1->1 이런거 shl #비트의..
각각 32bit의 크기를 차지하는 저장공간cpu가 가지는 개별적인 공간 범용 레지스터-일반 레지스터EAX - 누산기( 계산하는 역활 ) EBC - 간접주소지정 ECX - 반복문 카운터 EDX - 데이터 저장 -인덱스 레지스터ESI, EDI - 문자열 비교 및 저장 -스택 포인터EBP - 베이스 ESP - 스택의 top#부가설명 : 프로그램의 코드에서 함수나 지역변수, 함수호출후 돌아갈 명령어주소 는 스택에 저장 이 된다. 스택은 비교적 뒤에 있으며 스택이 등지는 주소쪽에는 커널같은? 운영 공간이 있다.힙( malloc 메모리를 할당하는 공간 )과 마주보며 한 세그먼트 구역을 공유한다. 명령어 포인터 EIP - 다음 실행할 명렁어의 주소를 가리키는 포인터 세그먼트 레지스터플래그 레지스터 #스택 포인터와 명..
shell code 쉘코드셀코드셸코드 정확환 외래어 발음은 모르겠고. 특정명령을 실행시키는 기계어 코드이다. \xab\xcd\x10 보통 이런식으로 되어있다. shelld의 정의 사용자와 커널간의 대화를 가능하게 해주는 창 ( 명령어 -> 기계어로 봐꿔주는 역활 ) 예제 bash shell - 리눅스에서 가장 많이 쓰이는 쉘hbase shellspark shell
package insertCsv; import java.io.BufferedReader; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; //import org.apache.hadoop.fs.FileSystem; //import org.apache.hadoop.fs.Path; import org.apache.hadoop.hbase.client.HTable; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.io.ImmutableB..
이클립스 neon1hadoop-2.7.3hbase-1.2.4zookeeper-3.4.9 ( hive-2.1.1도 있지만... 맵리듀스가 sql로 실행하기 때문에 매우 편리하다.. 근데 안 쓸거다.) hdfs(파일시스템)위에 hbase가 작동한다.가상분산모드( 완전분산모드의 경우 제약이 많이생긴다...컴퓨터의 구입이라든가, 휴대라든가)아파치+톰캣 was구성 : http같은 정적서버를 아파치가 담당하고 톰캣이 정적페이지 (jsp)를 담당한다.프론트엔드 : css+html5+[js 자바스크립트는 쓸지말지..] 구성 (css 다 까먹어서 복습이 필요하다.) 현재 어느 중국분이 올린 hadoop-eclispe 플러그인으로 (java api사용)( 웹(클라이언트)과의 연동방법으로는 1. java api - 서버로 ..
"뒤적거릴 문자열" =~ s/찾을 문자열/바꿀 문자열/옵션;# subst.pl $_ = "Where is my baby, Oh Baby !"; if( $count = ( s/baby/lover/ ) ) # $_ =~ s/.... 로 인정됩니다. { print "Replaced $count time(s).\n \"$_\"\n"; } else { print "Failed.\n"; } print "Fore : $`\nAft : $'\n";일반변수가 있어야 할 자리에 없으면 $_로 계산하고 if문에서는 $_=~ 로 인정이 된다.( 생략 )뒤의 Baby의 값은 봐뀌지 않는다...대문자라서? i를 옵션으로 줘도 안된다.s는 기본적으로 하나의 문자열만 치환하기 때문에 g(gloval)옵션을 부여하여야 된다. 문자의 ..