所以,在python中,當我嘗試執行下面的代碼時。TypeError:execv()arg 2只能包含字符串
from subprocess import *
args = "A"*99
args = list(args)
args[ord('A')] = "\x00"
args[ord('B')] = "\x20\x0a\x0d"
proc= Popen(["./input2"]+args,stdin=PIPE,stderr=STDOUT)
我得到
TypeError: execv() arg 2 must contain only strings
所以我做了一些研究和認識,如果在Popen()
任意整數格式的參數,它會給我的錯誤。但我不知道哪個參數可能是一個整數。
FYI:如果我註釋掉
args[ord('A')] = "\x00"
args[ord('B')] = "\x20\x0a\x0d"
這個代碼,錯誤不會出現在所有。
- 程序輸入2是用c寫的,它將簡單地把輸入和比較值 - argv ['A'] - 如果爲真,程序將打印第一階段清除。
你想做什麼?你爲什麼試圖將這些奇怪的命令行參數傳遞給'。/ input2'?如果'input2'是你寫的東西,你爲什麼寫它將這些東西當作命令行參數? – user2357112
你不能在一個程序的參數中放置一個空字節('「\ x00」')。 – user2357112
這是CTF問題上pwnable.kr –