問題タブ [pwntools]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 直後の入力を期待する出力に対する PwnTools recv()
こんにちは、解決策が見つからないように見える問題があります。(たぶん、私は英語で検索を正しく表現するのが苦手なのかもしれません)
pwntools を使用して python からバイナリを実行し、自分で入力を送信する前にその出力を完全に読み取ろうとしています。
私のバイナリからの出力は次のとおりです。
最初の行、2 行目、および 3 行目の出力部分 (「:」が最後の文字) を読みたい場所。
出力の 3 行目は、最後に改行が含まれておらず、ユーザーが直接入力する必要があります。しかし、3行目から始まる出力内容がどう見ても読めません。
これを達成しようとする私の現在の方法:
stdin と stdout について誤解していませんか? 3 行目の「入力を入力してください:」は、入力を行う前に受け取ることができるはずの出力の一部ではありませんか?
前もって感謝します
gdb - pwntools によって開かれたプログラムのデバッグ
大学のコースでスタックオーバーフローを実行しようとしています。私が利用しようとしているバイナリにはカナリアがありますが、そのカナリアを標準出力にリークする方法があります。もちろん、カナリアはいくつかのランダムなバイトで構成されているため、プログラムが標準出力に出力する文字列からそれらを読み取ることはできません。
このため、私は python と pwntools のようなものを使用していp.recv(timeout = 0.01).encode("hex")
ます。
(私が pwntools を使用しているのは、出力を 16 進形式で読み取る別の方法がわからないためです。もちろん、他の方法を使用できる簡単な方法があれば)
これは多かれ少なかれ期待どおりに機能し、カナリアを過ぎたメモリ領域を書き込むことができました。ただし、セグメンテーション違反が発生するため、明らかにスタックオーバーフローに問題があります。スタックオーバーフローを引き起こす入力を提供した後にスタックを確認するなど、これをデバッグする方法が必要です。
そして、これ以上苦労することなく、実際の質問: pwntools (のようなprocess("./myprog")
) で開始したプロセスを GDB またはスタックの内容を表示できる他のプログラムでデバッグできますか?
私はすでにpythonでpidを取得し、gdb attachを使用してそのpidにアタッチしようとしましたが、うまくいきませんでした。
注: 悪用しようとしているバイナリには、guid が設定されています。それが重要かどうかはわかりません。