분류 전체보기

본 글을 포스팅하기전 앞으로 정리될 네트워크 글들은 글쓴이의 공부 및 정리가 목적인 글들로 잘못된 내용 또는 다소 주관적인 내용이 포함될 수 있음을 말한다 "후니의 쉽게 쓴 네트워크" 라는 책을 참고하여 글을 쓸 예정이다. 프로토콜 다수의 컴퓨터 사이에 원활한 데이터 통신을 위한 통신 규약 signal 송신의 순서, 데이터의 표현법, 오류 검출법 등을 정해준다 사람과 비유하자면 대화를 위해 필요한 언어라고 볼 수 있다 대화를 하는데 언어가 없거나 사용하는 언어가 다르다면 대화는 매우 힘들어질 것이다. 인트라넷 말 그대로 "내부의" 인터넷 으로 정해진 지역, 인가된 사람만이 사용할 수 있는 내부 통신망이다 보통 회사에서 사내 메일 시스템과 같은 보안이 조금은 필요한 공간에서 사용된다. 엑스트라넷 인트라넷과..
증감연산의 과정과 결과에 의문을 느껴서 정리해본다. #include int main() { int a=10; printf("%d %d %d\n",a++,++a,++a); printf("%d %d %d\n",a++,--a,a--); return 0; } 코드는 간단하게 위와 같고 gdb를 통해 간단한 디버깅을 해보았다. 일단 스택이라는 메모리 공간을 사용한다는 것을 알 수 있다. 프롤로그가 진행되고, printf("%d %d %d\n", a++,++a,++a); 의 인자는 뒤에서부터 스택에 쌓인다. a값을 ebp-0x4라는 스택의 밑바닥에 저장하고 뒤의 인자 두개 ++a, ++a 전위연산을 add명령어를 통해 진행한다 10 -> 12가 된 ebp-0x4 값을 eax레지스터에 저장하고 후위 연산이 진행되는데..
#본 포스팅은 글쓴이가 까먹었을때 다시 보기 위함으로 텍스트로 정리함 fake ebp 기법을 알려면 먼저 스택의 이해와 leave-ret 명령어의 이해가 필수적이다 1. 먼저 sfp와 ret를 overwrite할수 있는 취약점을 탐색 2. leave-ret GadGet의 주소를 알고 3. payload를 작성 Payload = shellcode 시작주소(buf+4) + shellcode + nop(버퍼의 크기 - shellcode) + &(buf+4) + leave-ret GadGet ================================================ leave-mov esp ebp-pop ebp ret-pop eip-jmp eip esp, ebp 레지를 중심으로 정리하면 leave ..
window -> ubuntu - rz ubuntu -> window -sz [filename]
까먹으면 다시 볼라구 basic한 bof기법 몇가지를 정리해두려 한다 먼저 bof란 buffer overflow의 약자로 가장 먼저 떠오르는 것은 stack bof이다 stack 메모리 공간에서 정해진 메모리 양보다 input양이 더 많을 때 넘치는 취약점을 말하는데, 이해하려면 당연히 stack 구조의 이해가 먼저 필요하다. stack 의 구조는 아래와 같다[출처] http://bob3rdnewbie.tistory.com/187 만약 buf의 크기가 40byte이면 40보다 더 많은 양인 44byte를 넣어서 4byte를 overflow 시키는 것이다. 기본적으로 ret주소를 /bin/sh 또는 삽입한 쉘코드의 시작주소로 조작할 수 있다 취약한 함수로는 strcpy, gets 함수 등 입력 수 제한이 ..
리눅스 환경에서 디버깅을 돕는 peda를 설치했다 간단한 사용법으로 #pdisas func_name 디스어셈블해준다 gdb랑 다르게 색이 있어서 보기좋다 #checksec 보호기법 체크 내장 # bp를 걸고 돌려보면 gdb와 또 다른게 레지스터들에 들어있는 값이 바로바로 보인다 이게 정말 편하다 #find 명령어 말그대로 찾아준다 개꿀이다
#압축 tar [option][filename][make filename]Ex) tar cvf condense.tar condense #풀기 tar [option][filename]Ex) tar xvf condense.tar
connection - NC : remote( IP, PORT) 형식으로 연결되며 가장 많이 쓰임 - Local : process( PATH ) 식으로 연결되며 인자값 path는 문자열임 - SSH : ssh( USERNAME , IP , PORT , PASSWORD ) 형식으로 연결 receive - recvl(int)로 int만큼 받아올 수 있음 - recvline()을 사용하면 말 그대로 1줄을 받아올 수 있음 - recvuntil() 전달되는 인자값 문자열까지 받아옴 packing - p32(x)를 사용하여 x를 리틀엔디안 방식으로 패킹할 수 있음 - u32(str)을 사용하여 packing되어있는 str을 언패킹해줌 interaction - 쉘을 얻어온 후에 상호작용을 가능하게 해줌
뚱졍뚱졍
'분류 전체보기' 카테고리의 글 목록 (13 Page)