본문 바로가기
hacking/pwnable

[Dream hack] Logical Bug: Command Injection

by ilp 2024. 9. 6.
반응형

들어가며

서론

우리가 프로그램을 개발할떄, 코드를 작성하는 것보다

이미 설치된  소프트웨어를 사용하는 것이 더 쉬울 때가 있따.

 

뭐, 파일 내용출력하는 셸프로그랢을 작성에서 파일 출력 코드를 직점 작성하느게 아니라,

시스템에 있는 cat을 활용하는 예가 있다.

 

이러한 이유로 c/c++ 프로그래밍에선 system 함수를 사용한다.

system 함수는 전달된 인자를 셸프로그렘애 보내서 실행한다. (system("cat flag") == 쉘에서 cat flag )

 

하지만 함수의 인자를 셸에 명령어로 전달 하는 것에서 취약점으로 이어지기도 한다.


Command Injection

Command Injection

인젝션(Injection)

: 악의적인 데이터를 입력해서 시스템 명령어, 코드, 데이터 베이스 쿼리(DB 조작) 등으로 실행되게 하는 기법을 말한다.

 

여기서 사용자 입력을 시스템 명령어로 실행하는 것이 command injection 이다.

그리고 이 command injection은 사용자가 인자명령어를 실행하는 함수에 전달이 가능할 때 발생한다.

(system 함수 같은 사용자의 입력을 전달하는것들에서 발생한다.)

여기서 사용자의 입력을 제대로 검사하지 않으면 문제가 된다.

 

👇아래는 프로그렘이 지원하는 메타 문자들 이다.

여기서 아주 나이스 한 것들은 &&, ;, | 이것 등 이다.

여러개의 명령어를 사용할 수 있게 해주는 친구들 이다.

이러 문제로 pint [user-input]을 실행했을 때, a; /bin/sh를 전달해서 ping a를 하고 /bin/sh를 할 수도 있다.


마치며

command injection 을 알았고 단순한 취약점이지만 치명적이다.

👇 키워드

  • 인젝션(injection)
  • 커맨드 인젝션(command injection)
  • 메타 문자(Meta Character)

반응형

'hacking > pwnable' 카테고리의 다른 글

[Dream hack] Memory Corruption: Out of Bounds  (6) 2024.09.19
[Dream hack] Return Address Overwrite  (0) 2024.09.18
[Dream hack] sint (p32)  (0) 2024.09.05
[Dream hack] cmd_center  (0) 2024.09.04
[Dream hack] Logical Bug: Path Traversal  (0) 2024.09.01