일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- utmp
- goblin 3번
- los.rubiya.kr
- sqli
- UTM
- Union SQL Injection
- docker compose
- ubuntu
- Python requests 설치
- 1819 (HY000):
- Error Based SQL Injection
- MySQL
- mocOS
- 가상머신 os
- 2002(HY000)
- M2
- No module named ‘requests’
- ModuleNotFoundError: No module named ‘requests’
- SQL i
- SQLi wargame
- 우분투
- Lord of SQL Injection
- XAVIS
- btmp
- blind SQLi
- Lord of SQLinjection
- Kail Linux
- sql injection
- str_replace함수
- LOS 5번
- Today
- Total
klaus
[KDT-DAY_11] Linux 명령어 본문
0. 들어가기
명령어 정리한 파일 금일
file
readlink
pwd
clear
cat - 파일 생성 및
ln -s /ln
ls -l ls -d ls-a <<약자로 쓸경우 ll , ld
0>,1>, 2>
>, >> << ,<< 리다이렉트
touch 생성
sr 정령
mv 이동
rename 이름확인
mkdir -p 만들기(dir)
rm -rf
cd, pushd, popd
shred
head, tail (어디까지 보여주느냐)
.
cd. cd../ cd ../../
PS1
date날짜
&&, ; 똑같이 사용가능 (and)
cp -arp ==>하위 디렉터리
md5sum : 인터넷이나 파일을 다운받았을 때 무결성(in+te+gri+ty) 검사
1. Linux 명령어
[+] 파일검증
- md5sum
> 다운로드한 파일 변형 유무 확인(악성코드)
[실습]
socat-1.4.2.0.tar.gz 파일을 다운받았다고 가정할 때, md5sum을 사용하여 변형 유무를 확인할 수 있다.
※ windows에서는 powershell에서 Get-FileHash 와 certurtil를 사용하여 md5 체크섬을 할 수 있다.
hash 함수표
[+] 시간 관련 명령어
- date, rdate(원격지의 시간을 현 시스템에 적용하는 것)
- clock, hwclock (컴퓨터의 H/W가지고 있는 내장 시간 (CMOS battery가 HW의 전원이 없어도 가능. HDD,CDROM 등 인터넷이 되지 않는 상황))
> hwclock --hctosys : H/W시간으로 SYSTEM시간을 변경할 경우
> hwclock --systohc : 시스템 시간으로 H/W시간을 변경할 경우
- cal : 캘린더 (달력)
> cal -y : 이번년도 달력 출력
[+] 프린터 명령어어(lp~)
- lp(line printing)는 인쇄에 사용되는 명령어
- lpd(프린터 데몬(daemon)), lpr(인쇄 명령어), lprm(인쇄 명령어 취소(rm)), lpq(인쇄 대기(queue)),
IPP(네트워크 프린팅 프로토콜:Line Printing Protocol)
[+] type: 명령어의 종류 확인
- 종류는 내부 쉘, 외부셀
builtin 내부라는 의미
lsof = 현재 사용중인 파일들 목록, 소유자 등의 정보 확인
pidof = 특정 프로그램의 프로세스 번호를 보임
==> process는 하나의 실행 단위로써 어느 프로그램의 실행 중인 상태를 의미하기도 한다.
lsof -u [user]|wc -l하면 centos의 연결된 파일들
[+]pid [특정 프로세스] 를 확인해서 ping명령을 kill시킬 수있다.
ping localhost 명령어를 실행줄일 때에는 Kill -9 번호(100139)
실행중인 명령어(ping)가 종료(killed)된 것을 확인 할 수 있다.
어느 '명렁어&' 를 입력하면 해당 명령어를 백그라운드에서 실행
[+] 파일 송수신 (암호화)
- scp(ssh copy)
> 네트워크에서 암호화된 ssh 세션을 통한 호스트 간의 파일 전송시 사용
> 따라서, ssh 프로그램이 노드에 설치되어 있지 않으면 실행되지 않는다. (CentOS 디폴트 설치 및 방화벽 open)
> Ubuntu의 경우 apt-get -y install openssh- server 해서 설치한 뒤, 포트를 열어준다. (ufw allow 22/tcp)
> scp의 용도/ 형식은 rsync와 사용은 비슷하지만, rsync와 다르게 별도의 데몬 없이 간단하게 보안 파일 송수신이 가능
사용방법 :
∎ 'scp 보낼_파일_위치 타겟_사용자@타겟_호스트(OR IP):/저장될_위치'형식으로 보낸다.
∎ 'scp 타겟_사용자@타겟_호스트(OP IP):/받아올_위치 저장될_내_위치' 형식으로 받아온다.
> 디렉터리 송수신은 scp -r 디렉터리 ~ 식으로 사용하고,
> 여러 파일 송수신에서는 scp file1 file2 ... ~ 식으로 사용하면 된다.
> SCP 파일 보내기
먼저, echo "IM CENTOS1"이라는 내용의 centos1.txt파일 작성
scp /home/centos/centos1.txt centos@192.168.100.82:/home/centos/
==> 전송할 파일을 입력하고 주소(호스트@IP): 위치를 입력하여 전달한다.
작성한 파일
scp를 통해 파일 전달
centos7_82_cli에서 전달된 파일을 확인 할 수 있다.
scp를 통해 파일 가져오기
- 가져오기 폴더 가져오기
scp -r [연결 위치와 가져올 파일을 선택] [저장할 위치]
centos7_82_cli에서 centos_14로 centos.txt파일 가져오기
추가적으로 여러 파일 을 보낼 때에는 scp [파일을 여러개 선택하고] 보낼 위치를 적어준다.
centos_82_cli에서 전송된 파일을 확인할 수 있다.
[+] touch
- 빈 파일 생성 또는 파일의 접속 속성을 변경
이 명령어는 파일이 있을 때는 파일의 적속 시점을 변경하고, 없으면 빈파일을 만들어준다.
그리고 어느 작업을 수행하기 앞서 앞으로 쌓이는 데이터를 저장해야할 빈 공간을 만들어 놓기도 한다(Log와 같은)
[+] find
- 파일을 찾거나 찾은 파일로 작업이 가능히다.
- 파일이나 디렉터리를 찾는 find 명령어로 찾기 이외에 찾은 파일이나 디렉터리를 대상으로
다양한 작업을 추가해줄 수도 있는 매우 강력한 도구이다.
- 옵션
atime ±n : n days 전후에 액세스한 파일 =>어제 접속했던 파일 : atime -1
mtime ±n : n days 전후에 변경된 파일
amin ±n : n minutes 전후에 액세스한 파일 =>1시간 전에 접속했던 파일 : amin -60
cmin ±n : n minutes 전후에 변경한 파일
empty : 비어있는 파일이나 디렉터리로 -size 0k 옵션과 같음
name "abc.txt" : 이름이 abc.txt인 파일, -name "*.txt"식도 가능
newer "abc.txt" : "abc.txt" 파일보다 최신인 파일
type d,l,s,b,f : 디렉터리(d), 심볼릭 링크(l), 소켓(s), 블록장치(b), 파일(f) 타입 찾기
perm 777 : 권한이 777인 파일
size 1024k : 크기가 1024k인 파일,
범위로 지정할 때에는 \( -size 10M –o -size 12M \) 해서 (10~12M)식으로 사용, 여기서 -o는 and 의미
user tori: 소유자가 tori인 파일
maxdepth : 찾는 경로 지정. 현재 경로가 1이고, 2는 현재경로에서 하나 아래경로까지 찾기
print : 결과를 보이라는 옵션인데, 주로 |와 함께 사용해서 결과를 | 뒤에 지정한 파일로 저장함 등이 있다.
형식은 'find 찾을_시작_위치 -type f/d –name 찾을_파일/디렉터리_명 추가_옵션'식으로 사용한다.
추가_옵션으로 find ~ 뒤에 | 나 >, 특히 '-exec 명령어 { } \;' 를 사용하면 찾은 결과가 { }에 인자로 들어가서
찾은 결과를 대상으로 특정 명령어를 실행시킬 수 있다. \; 는 문장을 끝내는 ; 이 기호라는 것을 명시하려고 \를
붙인 것이다. 그리고 '–regex 명령어'를 사용해서 정규 표현식을 사용하게 할 수 있는데 이 명령어 뒤에는 $를 붙여준다.
- find /home -user centos -type f | more
찾아라 홈(/home/centos) 밑에 user centos의 파일(f) 찾기
home/centos/.cache/gdm파일이 있는 폴더를 찾을 때,
- find /home -type f -user centos -size 0k
: 홈부터 시작해서 유자가 centos인 사람의 파일이 사이즈 0k인 파일 찾기
- find /home -type f -user centos -size 0k -exec ls -l {} \;
: 상세 정보를 같이 표시할 때는 -exec를 사용해서 ls명령도 같이 사용
- 사이즈 범위를 넣을 때
find /home -type f -user centos \( -size 0k -o -size 1k )
- exec 추가
/root아래에서 .bachrc를 찾아서 /home아래 넣어고, 그리고 /home아래를 ls를 통해 확인하여라
- find / -type f -user centos \( -size 0k -o -size 1k \) |ll *.txt
찾은 파일중 txt파일을 확인 할 때
- 제외하고 파일을 볼 때에는 (!)
find / -type f -user centos \( -size 0k -o -size 1k \) |grep "*.txt"
> -o 옵션은 and와 같은 의미로 범위를 줄 때 사용한다.
- find /home/centos/ \! -name "*.txt"
확장자가 txt파일이 아닌 파일을 찾을 경우
- 대소문자 구별하지 않고 찾기 (i)
- p* [a-z] 파일을 찾기
find / -regex '^/[f-z]*$'
f~z까지의 파일 찾기
[+] 파이프(-|)와 tr
- 명령어를 연결시켜주는 - | 와 데이터를 변경해주는 tr
- | [파이프로 읽음]는 리다이렉션의 한 방법인데 | 좌측 명령어의 실행 결과를 | 우측으로 넘기는 역할을 한다. |를
여러 개를 조합해서 사용할 수도 있으므로 응용범위가 매우 넓다.
- 참고로 Shell Script에서 ||는 or의 의미이고, &&는 and의 의미이다.
- dmesg | less 하면 시스템에서 발생하는 메시지를 보이는 dmesg의 결과를 less
명령어의 입력으로 해서 페이지별로 갈무리해서 보인다. vi 화면에서 열리므로 q 입력하면 닫힌다.
=> ~ |grep는 Filtering 역할을 한다.
dmesg만 입력하면 상당히 많은 정보를 확인할 수 있다. 그중 , less페이지 별로 보기위해서 사용한다.
- cat -n /etc/passwod |grep "root"
패스워드 파일에서 루트 권한 파일을 출력해준다 (줄표기)
[+] tr명령어
- 대소문자 변경 (대->소)(소->대)
/var/log/messges아래 tty(소문자)를 TTY(대문자)로 변경하고 그중 TTY를 위에서 5번째 줄 까지 보여줘라
- cat -n /var/log/messages |tr 'tty' 'TTY' | grep 'TTY' >/home/centos/TTY.txt
내용을 추출해서 /home/centos/TTY.txt 파일에 저장하기
- tr 을 사용해서 대소문자
> 사용할 경우 원본 파일은 변경되지 않음.
> 변경될 때에는 문자열이 아닌 문자 하나하나하나가 변경된 것이다.
- wc
- 파일에서 글자의 수 . 줄의 수 등 정보를 보이는 명령어(파일 내용 통계)
- 보통 | 뒤에 붙여 쓰는 옵션은
[+]stat
- 파일에 대한 많은 정보를 보이는 명령어
- Linux에서 자주 사용되는 중요한 명령어들이 많지만 이 stat 명령어도 매우 요긴한데 잘 사용되지 않고 있다.
- Linux에서 모든 파일은 파일명(hard link), 메타데이터(i-node), 그리고 데이터(data)를 가지고 있는데
stat 명령어는 이들 정보를 개별적으로나 모두 볼 수 있게 해준다. 특히 Access, Modify, 그리고 Change 등과 같은 정보를 보이므로 중요한 파일은 수시로 이 명령어로 보안 점검해 보는 것이 필요하다. 이 명령어로 특정 파일에 대한 수정이나 접근 시간 등을 보는 것은 매우 보안에서 중요하다고 볼 수 있다.
만약, passwd 파일을 예를 들어 기존에는 읽기만 변경되었으나, 유저/패스워드(변경 및 추가)를 입력한다면,
Access / Modify / Change 날짜가 업데이트 되어 있는 것을 확인할 수 있다.
[+]which, whereis, locate
- 명령어의 위치를 검색해주는 명령어 (위치)
- which 명령어는 환경변수 $PATH 값에 지정된 명령어 bin이나 sbin을 이용해서 디렉터리를 검색할 때 사용되며 절대경로 결과를 확인한다.
- whereis와 locate는 명령어의 실행파일, 소스, man 페이지 파일 등의 위치를 알려주는 명령어
[+]echo
파일생성, 변수 값 보기나 값 변경 등을 빠르게 설정해주는 - echo
이 명령어는 echo " " > 파일_명 식으로 사이에 내용을 넣어서 파일을 생성하거나, 시스템의 환경변수나 사용자 정의 변수의 내용을 볼 때, 설정 값을 변경할 때 등에서 사용된다.
[+] wget, git, curl, 그리고 lftp, lftpget
- 웹에서 파일을 복사해오는 명령어
- 필요한 파일 등을 다운받을 수 있는 웹 사이트 주소를 알고 있다면 콘솔에서 직접 파일을 다운받아 올 수 있는데
다음 몇 가지 도구가 유용하다.
∎ wget는 타겟 사이트에서 다운받고자 하는 파일을 반복적으로 접속해서 현재 사용 중인 디렉터 리로 다운받아주는데 wget HTTP~ , wget FTP~식으로 사용될 수 있고, –c 옵션을 주면 다운이 중단 되었을 때 이어서 받아준다.
∎ curl이나 pip 명령어로도 다운로드나 업로드를 실행할 수 있다.
∎ lftp는 다운로드가 실패했을 때 에러를 예외처리해서 다시 받아주고 2GB 이상의 대용량 파일 도 다운받아주며 방화벽이 있어도 우회해서 받게 해준다.
∎ lftpget 명령어는 lftp와 get를 합친 개념이지만 CentOS에서는 지원하지 않는다.
- curl -O abc.git https://github.com/docker/docker.git > abc.git
- lftp
su -c 'yum -y install lftp'
c는 임시로 ' '안에 명령어를 su권한으로 가져옴
- lftp -c "set ftp:passive-mode on:set net:max-retries 3;set net:timeout 5;mget -c ftp://ftp.intel.com/readme.txt"
passive 모드로
3번까지 요청하고
5분 mget 여러개도허용
[+]more와 less
- 한 화면씩 출력해주는 명령어
- 내용이 많은 텍스트 파일을 페이지 단위로 화면에 출력한다.
- cat명령어 대신 more나 less로 more /etc/passwd식으로 해서 작은 파일을 읽으,ㄹ 수 있다.
[+]head tail
- 텍스트 파일에서 텍스트를 읽어 올때 필요한 부분만 읽어오기
- 디폴트 10줄이고 숫자를 쓰면 숫자만큼 보임
- f 옵션은 실시간으로 보임(주로 테일과 함께 사용)
- tail -f /var/log/secure명령을 통해 누가 실시간으로 접속하고 있는지 접속한 대상의 log를 확인할 수 있다.
- 로그인 한 후 아래 두줄이 추가된 것을 확인할 수 있다.
[+] windows의 DOS명령어도 일부 사용가능
- Linux에서 Windows의 DOS 명령어 앞에 m을 붙여서(mdir, mcopy, mcd, mdel, mformat, mrd, mread, mren, mtype, mwrite)로 사용할 수 있다.
- DOS 상태에서 리눅스 파일을 읽거나 백업할 때, 리눅스에서 DOS용 플로피디스트에 파일을 저장하거나 역으로
- DOS용 플로피디스크에서 Linux로 파일을 복사해 올 때 유용하다.
하지만 요즘에는 플로피디스크를 사용하지 않으므로 이 명령어들도 별로 사용할 일은 없다.
[+]bc와 let
- 쉘 스크립트에서도 자주 사용되는 bc(basic calculator) 명령어를 사용하면 콘솔에서 수식계산이 가능
- 사칙연산은 물론 x의 y승(x^y) 계산과, 10법을 16진법, 2진법을 10진법 등으로 변경 가능
=>이런 사용법 때문에 Shell Scripts에서 수식계산에서 널리 사용된다.
- 보통 ‘계산식 | bc’ 식으로 사용한다.
- sqrt(4) : 제곱근
- scale=4 소수점 표현
- let "SUM = 5+5" 5+5라는 값을 sum
[+] tee와 script
- 콘솔로 보면서 파일로 저장하는 명령어
- tee 명령어는 콘솔에서 실행된 내용을 보면서 한편으로는 그 내용을 저장할 때 사용되는 명령어로 파이프(|) 좌측의 실행결과를 표준 출력(stdout)으로 콘솔에 보이고, 파이프 우측에 표준 입력(Stdin)으로 지정된 파일_명으로 저장된다.
즉, 실행 내용을 콘솔에 표시하고 저장도 같이 된다.
- Script 명령어는 스크립트 해두면 이후에 콘솔에서 작업하는 모든 내용이 typescript라는 파일명으로 자동으로 저장된다.
- script
> 스크립트 명령을 쓰게되면 시작되고 exit명령을 통해 종료한다
[+]mail, mutt, mailx
- 콘솔에서 메일을 보낼 때 사용되는 명령어
- 사전에 시스템에 sendmail이라는 MX 도구가 설치되어 있어야 사용 가능한 명령어
- sendmail을 설치하기 전 설치 확인
> yum list installed |grep "sendmail"
> yum list |grep sendmail
> yum -y install mutt
- 설치 완료 후 서비스 시작
> service sendmail start
> systemctl start sendmail ; systemctl enable sendmail.service
[+] Disposable Mail이란 ????
여기서 사용한 mailinator.com, guerrillamail.com, 10minutemail.com, yopmail.com 등을 말하는데 MX(Mail eXchanger)에 계정 없이 즉석에서 사용자를 만들어서 메일을 보낸 뒤, 해당 사이트로 들어가서 사용자_명을 입력하면 메일을 확인할 수 있다. 이중에서 mailinator.com이 가장 사용하기 편하고, 국내용으로는 ruu.kr도 많이 사용되고 있다. 이들은 원래 10분, 30분 정도만 메일을 보관했지만 현재는 오래 보관하기도 한다.
가입없이 실행한다. (일시적으로 메일 저장)
echo "here is a test mail from testt1234" | mutt -s "testt1234" test_tori@ruu.kr
echo "here is a test mail from testt1234" | mailx -s "testt1234" test_tori@ruu.kr
[+]history
- 실행했던 이벤트와 명령어를 보이는 명령어
- !를 사용하여 명령어 실행
- !! 마지막에 사용한 명령어
- !$마지막으로 실행되었던 문자열 명령어를 실행한다.
[+]정규 표현식에서 자주 쓰이는 연산부호(operand, handle) 정리
쉘 실행
엔터, ;, `명령어`,
$(명령어) 명령어를 실행함
{ } { }의 어느 문자와 매치되면 실행함 <={Aa}
\ \뒤의 것이 특수문자인 것을 표시함 <=\(
| | 앞의 실행결과를 | 뒤의 입력으로 함
& 백그라운드로 실행함
!숫자 history에서 해당 숫자를 실행함
* 임의의 여러 문자
? 임의의 한 문자
[ ] [ ] 범위에 매치되는 문자 <=[a-z]
> > 앞의 실행결과를 > 뒤의 입력으로 함
>! > 앞의 실행결과를 > 뒤로 강제 입력함
< < 뒤의 실행결과를 < 앞의 입력으로 함
>>, << >> 앞의 실행결과를 >> 뒤로 추가함
2> /dev/null 표준 에러를 콘솔에 표시 안 함
2>& 1 표준 에러를 표준 출력으로 보냄
2>& /dev/null 표준 에러를 파일이나 장치로 보냄
- 기호 역할
A>& B A 파일의 출력을 B 파일의 입력으로 써줌
A<& B A 파일을 읽어서 B 파일의 출력으로 써줌
0> A STDIN : 키보드 입력
1> A STDOUT : 화면 출력
2> A STDERR : 화면 에러
- 파일을 좀 더 잘 찾아주는 정규표현식 - *, ?, [], {}, 2>, 1>& 등
- 정규 표현식이란 [ ]나 { }, 그리고 *과 ?와 같은 부호를 사용해서 명령어 실행을 간략히 빠르게 하는 방법인데,
정규 표현식으로 많은 파일과 문장을 편리하게 조작하게 해준다.
- 쉘 스크립트나 데이터베이스 SQL 쿼리, Python, C, JAVA 등에서도 자주 사용된다.
'수업 > KDT' 카테고리의 다른 글
[KDT-DAY_13] Linux (feat. 편집기, 권한) (1) | 2023.01.11 |
---|---|
[KDT-DAY_12] Linux (feat. 명령어) (0) | 2023.01.10 |
[KDT-DAY_10] Linux (feat.명령어) (0) | 2023.01.06 |
[KDT-DAY_9] Linux (feat. 커널, Xwin) (0) | 2023.01.05 |
[KDT-DAY_8] Linux (feat. 커널 업그레이드_1차) (0) | 2023.01.04 |