파이썬으로 공격코드를 짜다 보니 Bash 쉘 스크립트를 실행하는 여러가지 방법을 찾게 되었다.
이번 정리를 통해 추후 공격 스크립트 작성시 적절하게 활용할 수 있기를 기대해본다.
1. os.system 구문을 이용해 명령 실행 하기
1 2 3 4 5 6 |
import os import sys os.system ('ls -al | grep "user") // pipe command is available |
위와 같이 단순히 명령 실행을 위해 사용시에는 문제가 없으나,
결과값을 특정 변수에 저장하는 목적으로 사용하기에는 적합하지 않다.
(명령 실행 결과의 성공 유무를 리턴하기 때문에…)
따라서 위의 단점을 보완할 수 있는 방법이 바로 subprocess 이다.
2. subprocess 이용하여 명령 실행하기
먼저 os.system과 같이 단순히 “실행”만 시킬 때는 “call” 메서드를 이용하면된다.
1 2 3 |
import subprocess subprocess.call ('ls -al', shell=True) |
그러나 특정 명령 수행 결과를 바탕으로 if 조건문을 걸때에는 call이 아닌 check_ouput을 이용해야 한다.
예를들어 특정 파일 실행결과가 “AAA” 혹은 “BBB”라고 가정해보자.
“AAA” 일 경우 “123”을 출력하고 “BBB”일 때 “456”을 출력하려면 다음과 같이 코드를 작성하면 된다
1 2 3 4 5 6 7 |
import subprocess result = subprocess.check_output ('./program' , shell=True) if result == 'AAA' : print "123" elif result == 'BBB' : print "456" |
위와 같이 check_output 메서드를 사용하면 해당 실행 결과를 스트링값으로 리턴해주기 때문에
실제 실행결과값을 바탕으로 조건 구문을 사용할 수 있게 된다.
3. 참고 사이트
아래 사이트에서 파이썬을 통한 bash 명령 사용법을 좀 더 상세하게 볼 수 있다.
https://docs.python.org/2/library/subprocess.html
http://mervine.net/executing-bash-from-python