본문 바로가기

전체 글

[참고] FTZ LEVEL11 쉘코드 제작시 참고 /bin/sh & /bin//sh 비교 어셈블리어에서 문자열을 처리하는 단위는 4바이트이다. 하지만 "/bin/sh"는 7바이트 문자열이다. 8바이트의 문자열어서 다루는 것이 편리하기 때문에 "/" 문자를 하나 더 입력하고 8바이트 길이의 문자열로 인위적으로 만든것이다. 동작은 /bin/sh 와 /bin//sh는 동일하게 동작한다. 다루기 쉬운 문자열로 변경만 한것이다. /bin/sh(7바이트) == /bin//sh(8바이트) NULL처리 하기 복잡 /기호를 하나 더 적어 변환처리 없이 사용 (linux200) # ps PID TTY TIME CMD 14186 pts/1 00:00:00 bash # /bin/sh # ps PID TTY TIME CMD 14186 pts/1 00:00:00 bash 142.. 더보기
[참고] Format String이란 Format String 대해서 다음은 인터넷상의 글을 공부하면서, 다시 정리한 문서입니다. 인터넷에 글을 올려 모든 분들께 감사합니다. 되도록 원문의 내용을 변경하지 않는 상태로 실습용 예제만 편집하였습니다. 1. 포맷 스트링(Format String) 이란? => ret 또는 dtors값을 쉘코드의 주소 값으로 덮어 공격용 쉘을 실행 시키는 공격이다. (예제) test.c main() { char put[30]; printf("What your name: "); scanf("%s", put); printf("%s hello!\n", put); } 이러한 소스에서 %s의 역활은 입력받고 출력되는 변수의 Format를 지정하면서 나타나게된다. 포멧스트링의 종류에는 ----------------------.. 더보기
11_Level11 -> Level12[FTZ] 포맷스트링(Format string directive) 취약점 ■ Level11 -> Level12 ■ 목적 포맷스트링(Format String Bug)과 버퍼오버플로우(Buffer Over Flow) 포맷스트링(Format String)에 대해서 포맷 스트링 = 포맷 스트링 지시자(Format String Directive) 포맷스트링은 %d %x %.. printf에서 사용하는 지시자를 나타낸다. 포맷 스트링 버그/어택 특이한 포맷스트링 지시자를 사용하는 것 프로그래머가 코딩을 잘 못 했을 때 우선 포맷 스트링 지시자 가 무엇인지부터 알고 넘어가야 버퍼오버플로우에 대해서 접근할 수 있다. 2진수로 저장된 값을 우리가 인식할 수 있는 형태로 바꿔 주는 것이 printf() 함수와 같은 곳에 전달하는 포맷 스트링 인자이다. 특정한 형식으로 출력해보자. $ vi fo.. 더보기
[참고]공유 메모리 관련 함수 공유 메모리 관련 함수 shmget() 함수 shmat() 함수 shmdt() 함수 ■ shmget() 함수 NAME shmget - allocates a shared memory segment 메모리 안에 들어있는 일부내용 조각들을 세그먼트라고 부른다. 그것을 할당한다. SYNOPSIS #include #include int shmget(key_t key, int size, int shmflg); DESCRIPTION shmget() returns the identifier of the shared memory segment associated to the value of the argument key. A new shared memory segment, with size equal to the rou.. 더보기
10_Level10 -> Level11[FTZ] 공유 메모리에 데이터를 읽고 쓰기 ■ Level10 -> Level11 ■ 목적 공유 메모리에 데이터 읽고 쓰기 프로세스와 프로세스가 통신(메세지를 주고 받는 방법) -소켓 사용하는 경우(EX: Clint/Server 프로그램) cs프로그래밍 이라고 한다. server - client 통신 [EX] 서울버스 어플리케이션 화면 구성이나 메뉴는 스마트폰(client)에 있고, 실제 버스의 데이터는 Server에 존재한다. 어플(client)이 서버로부터 데이터를 갖고 와서 화면에 출력하는 방식. -공유메모리를 사용하는 방법(EX: DB 프로그램(Oracle)) DB에 여러 데몬들이 같은 메세지를 가지고 작업해야할 때 -파일을 사용하는 경우 가장 성능이 떨어지는 방식 -DB 사용하는 경우 DB에 정보를 요청해서 빼가는 방식 -기타 이번 레벨에.. 더보기
09_Level9 -> Level10[FTZ] 버퍼 오버 플로우 소개 ■ Level9 -> Level9 ■ 목적 버퍼오버플로우(BOF, Buffer Overflow)소개 버퍼오버플로우 기법을 이해하기 위해 메모리의 값을 조작하는 방법 Stack Buffer Overflow (지역변수 활용) - 쉽고 복잡하게 구성 Heap Buffer Overflow (메모리 할당) - 어렵고 단순하게 구성 [참고] 변수의 메모리 배치 확인과 GDB 사용방법 http://hyess.tistory.com/366 ■ Level9 풀이 level9 사용자 로그인 -> ID/PASS : level9/apple $ cat hint 다음은 /usr/bin/bof의 소스이다. #include #include #include main(){ char buf2[10]; char buf[10]; printf(.. 더보기
[참고] 버퍼 오버 플로우 [본 문서는 http://geundi.tistory.com/118의 블로그에 기재된 내용으로 학습 용도로 사 용함에 있어서 훼손이나 문서를 수정하지 않았습니다.] (1)프로그램 실행시 메모리의 구조 하나의 프로그램이 실행되면 프로그램 수행에 필요한 메모리가 할당 됩니다. 하나의 프로그램에 할당되는 메모리의 전체적인 모습은 다음과 같죠. /--------------------/ ← 메모리의 높은 숫자의 주소 | | | Stack | | | /------------------/ | | | Heap | | | /--------------------/ | | | Data | | | /--------------------/ | | | Text | | | /--------------------/ ← 메모리의 낮은 .. 더보기
[System Hacking] 윈도우 취약점 체크리스트 & 안전진단 스크립트 제작 [본 문서는 http://blog.naver.com/sbd38 의 블로그에 기재되어 있으며 학습 용도로 문서를 훼손 또는 수정하지 않았습니다.] 윈도우 취약점 체크리스트 윈도우 취약점 점검시 확인해야할 사항 대부분의 보안종사자들은 자동화된 툴을 이용하여 다음 취약점들을 점검한다. 간단한 것들은 한번 제작해 보는 것도 공부에 도움이 될 것이다. Windows 취약점 점검 결과 항목 항목번호 세부항목 중요도 점수 장비명 진단결과 점수환산 상세내용 계정 및 패스워드 관리 SW101 Administrator 계정의 이름을 변경하였는가? 중 SW102 관리자 그룹에 일반 사용자 계정이 존재하지 않는가? 중 SW103 취약한 패스워드를 사용하고 있지 않은가? 상 SW104 최근 암호를 기억하도록 설정되어 있는가? .. 더보기
[참고]변수의 메모리 배치 확인 및 GDB 사용법 변수의 메모리 배치 확인 및 GDB 사용법에 대해서 사용시스템 - HackMe(level9/apple) 1. 변수의 메모리 배치 변수의 메모리 배치를 확인하기 위해서 프로그램을 만들어 보자. 변수와 변수의 사이에 dummy 라는 공간확인(정확한 배열을 위함) 여러개의 지역변수를 많이 할당한 것을 배열이라고 한다.(순차적) [level9@ftz level9]$ ls -l 합계 12 -rw-r--r-- 1 root root 391 11월 13 2002 hint drwxr-xr-x 2 root level9 4096 2월 24 2002 public_html drwxrwxr-x 2 root level9 4096 1월 16 2009 tmp [level9@ftz level9]$ cd tmp [level9@ftz le.. 더보기
08_Level8 -> Level9[FTZ] 로컬/원격 패스워드 크랙 ■ Level8 -> Level9 ■ 목적 패스워드 크랙(Crack) 대표적인 패스워드 크랙툴 로컬패스워드 크랙툴(Offline Password Crack) : John the Ripper(johnny) 원격패스워드 크랙툴(Online Password Crack) : Hydra(xhydra) ) --> 힌트는 충분하다. $ cd /etc ; ls -l shadow* -r-------- 1 root root 3195 Sep 17 02:40 shadow -rw------- 1 root root 3168 Jan 15 2009 shadow- -rw------- 1 root root 5 Jan 15 2009 shadow.lock /etc 밑에 있는 shadow는 root만 볼 수 있으며 용량 또한 위와 같지 않다.. 더보기