したがって、次のコードを実行しようとすると、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)
私は、だから私はいくつかの研究を行なったし、それは私にエラーを与えるPopen()
に任意の整数フォーマットされた引数がある場合に実現
TypeError: execv() arg 2 must contain only strings
を取得します。しかし、どの引数が整数である可能性があるのか分かりません。
FYI:私は
args[ord('A')] = "\x00"
args[ord('B')] = "\x20\x0a\x0d"
このコードをコメントアウトした場合、エラーがまったく表示されません。
- プログラムINPUT2は、単に入力を取り、値を比較するたCで書かれている - のargv [「A」] - 「\のX00」と真、プログラムは、ステージ1が透明印刷かどう。
あなたは何をしようとしていますか?あなたはなぜそれらの奇妙なコマンドライン引数を '。/ input2'に渡そうとしていますか? 'input2'があなたが書いたものであれば、なぜこのようなことをコマンドライン引数として使うのですか? – user2357112
プログラムの引数の1つにヌルバイト( '" \ x00 "')を入れることはできません。 – user2357112
それはargv ['A']の値が "\ x00" と一致しなければならないpwnable.kr –