2017-05-17 1 views
0

저는 가정 학습을하고 있습니다. 저는 일부 Python 코드에 명령 삽입을 시도하려고합니다.Python : subprocess.call injection

내가 가지고있는 문제는 수표와 함께 있고, 캔트가 그것을 우회하는 것처럼 보입니다.

address = sys.argv[1] 
if not re.match("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}", address): 
    return usage("Invalid argument") 

subprocess.call("/bin/ping -c 3 '{0}'".format (address), shell = True) 

유효한 IP 주소 인 경우 위 프로세스가 올바른지 확인한 다음이를 수행하는 방법에 대해 조언 하시겠습니까? 종류 안부

, 패트릭

+0

보이지 않는 것처럼 보입니다. 정규식 검사로이 명령 호출을 주사에서 안전하게합니다. –

+1

@AndrewCherevatkin 아니요. 정규식은 고정되어 있지 않으므로 해당 주소 내에서 유효한 * 하위 문자열 * 만 검사합니다. – chepner

답변

2

당신은 시스템 명령 다음에 유효한 IP 주소, 예를 들어, 사용할 수 있습니다 : 당신이 인수를 포함 따옴표로 argv[1]를 포장하려면

127.0.0.1';/sbin/ifconfig;:' 

을 :

"127.0.0.1';/bin/ls -al /root;'" 
+0

문자열이 따옴표로 묶여 있기 때문에 조금 복잡합니다. '127.0.0.1 '; ifconfig ;:''와 같이, 따옴표를 닫았다가 다시 열어 유효한 명령 줄을 생성해야합니다. – chepner

+0

@chepner 예, 당신은 절대적으로 맞습니다. 내가 업데이트 할게요. –

+0

고마워요. 당신이 정말로 저를 도와주었습니다. – PatrickStel

관련 문제