CentOS 5.8에서 실습


설치는 이전 글 참조


CentOS 맛보기만 할건데


안 될 수도 있다 그럼 패스하자


나중에 다 자세히 다룰 내용이다.


putty 다운로드

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html



putty.exe 를 실행 -> 

192.168.219.198(자신의 ip / ifconfig 확인가능) ->



ip 입력하고 Open ->



창에서 예(Y)-> 



login as:  <-- 자신에게 부여된 사용자명 여기선 root

linux@192.168.219.198's password: <-- 설치할때 입력한 password


[linux@localhost ~]# <-- 로그인성공




[root@localhost ~]#  <-- 프롬프트 


$  <-- 일반유저

#  <-- 관리자 (root)



ex)

www.daum.net

www -> localhost

daum.net -> localdomain


localhost.localdomain  



PE : 윈도우

ELF : 리눅스

a.abc  <-- 실행할 수 있는가 ?

윈도우는 확장자가 필요함

리눅스에서는 확장자 구분이 없음



# i fconfig


eth1 <-- IP 확인 192.168.56.101

eth?

? 의 숫자는 사용자마다 다를 수 있음


# cp /etc/DIR_COLORS ./dircolors

# logout 


root 수퍼유저


o 리눅스에서 실행 디렉토리

- 이 디렉토리에 파일이 있다면 아무곳에서나 실행하면

  실행이 된다. PATH변수



[root@localhost ~]# ls -l /bin

[root@localhost ~]# ls -l /sbin

[root@localhost ~]# ls -l /usr/bin

[root@localhost ~]# ls -l /usr/sbin

[root@localhost ~]# ls -l /usr/local/bin

[root@localhost ~]# ls -l /usr/local/sbin

[root@localhost ~]# ls -l /usr/X11R6/bin




ls -a -l

ls -l -a

ls -la

ls -al

=> ls의 경우옵션은 어케 써도 된다.




파일 내용을 보는 명령어 들

cat, tac, head, tail, less, more, view, vi


- 리눅스에서 복사하는 다양한 방법

[root@localhost ~]# cp /etc/passwd .

[root@localhost ~]# cat /etc/passwd > passwd2

[root@localhost ~]# dd if=/etc/passwd of=passwd3

[root@localhost ~]# install -m 644 /etc/passwd passwd4


# ls passwd*

--> passwd, passwd2, passwd3, passwd4 확인가능


# view /etc/passwd

:q


- 시스템을 종료하는 다양한 방법

# shutdown -h now

# init 0

# poweroff



-텍스트 인터넷

# LANG=ko_KR.utf-8

[root@localhost ~]# telnet naver.com 80

Trying 125.209.222.141...

Connected to naver.com (125.209.222.141).

Escape character is '^]'.

GET / HTTP/1.1

Host: www.naver.com



굵게 보이는 글씨는 직접 입력해야 함

Host: www.naver.com 다음 엔터 2번 입력해야함

(HTTP 헤더를 보내는 거)




-실행파일(ELF)

              컴파일러      링커

사람                                      컴퓨터

hello.c  --> hello.o --> 링킹과정 -----> 실행파일 

------------------컴파일 과정------------------->


<-----------------리버싱 과정-------------------



# vi hello.c

-- hello.c --

#include <stdio.h>


int main()

{

  puts("Hello C");

  return 0;

}

-- hello.c --



# gcc -c hello.c 

# ls -l

hello.o 

# gcc -o hello hello.o

# ./hello

Hello C



# gcc -s hello.c

# ls

--> a.out


# objdump -d | grep -A 10 main.:

080483a4 <main>:

  :

  :


c7 45 f8 00 00 00 00 movl   $0x0,0xfffffff8(%ebp)

c7 45 f8 01 00 00 00 movl   $0x1,0xfffffff8(%ebp)



# xxd --help



# xxd hello hello.xxd

# vi hello.xxd




여기서는 91번 라인에 Hello C 가 보인다


그럼 그 값을 조금 바꿔보자



위와 같이 6162 6364 6566 6700 으로 수정하였다


# xxd -r hello.xxd hello2

# ls -l hello hello2



Hello C 로 출력되던게 abcdefg로 출력이 되는걸 확인할 수 있다


# vi hello.c

-- hello.c --

#include <stdio.h>


int main()

{

  int i = 1;


  if(i == 1)

    puts("Hello C");

  else

    puts("Hello Linux");


  return 0;

}

-- hello.c --



# gcc -o hello hello.c

[root@localhost ~]# ./hello

Hello C

[root@localhost ~]# xxd hello hello.xxd

[root@localhost ~]# vi hello.xxd 




위와 같이 75번 라인에 0175를 찾을 수 있다..


0175를 0174로 바꿔본다



[root@localhost ~]# xxd -r hello.xxd hello

[root@localhost ~]# chmod 755 hello

[root@localhost ~]# ./hello

Hello Linux



if ( i == 1 )

이 부분을 if ( i != 1 ) 로 변경되어서


Hello C 가 아닌 Hello Linux가 출력이 된다


i 값을 1이 아닌 다른 값으로도 변경 가능하니 직접 비교해보기 바람..

(

hello.c 에서 i의 값을 수정하여 xxd 파일로 만들어 원본과 비교해보자.

그럼 어디가 값이 변한지 알 수 있을것이당..

diff 명령어나 cmp 명령어 이용

)


- 파일서버 (삼바서버)

# LANG=C

# yum grouplist



# yum -y groupinstall "Windows File Server"



# /etc/init.d/smb start

# netstat -nlt

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address               Foreign Address             State      

tcp        0      0 0.0.0.0:139                 0.0.0.0:*                   LISTEN      

tcp        0      0 0.0.0.0:445                 0.0.0.0:*                   LISTEN 



# useradd linuxuser

# passwd linuxuser


# smbpasswd -a linuxuser



# iptables -F

# ifconfig eth1




윈도우 실행 창에서

\\192.168.219.198



linuxuser 와 설정한 passwd 입력->