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
반응형
'Web Hacking > Information' 카테고리의 다른 글
LFI로 할 수 있는거 (0) | 2024.07.12 |
---|---|
SQL Injection 팁 정리 (0) | 2024.04.15 |
NoSQL Injection - MongoDB (0) | 2024.04.10 |
Non-Relational DBMS (비관계형 데이터베이스) (0) | 2024.04.10 |
Cross Site Request Forgery (CSRF) 취약점 (0) | 2024.04.04 |