簡體   English   中英

使用子進程的Python利用

[英]Python exploit using subprocess

我有一個小程序(程序A),要求輸入密碼,如果密碼正確,它將打開一個外殼。 我想在python中制作另一個程序(程序B),該程序調用程序A並提供密碼作為輸入,以便打開外殼。

我正在執行以下操作,但是該程序只是終止了,沒有讓我使用外殼。

p = subprocess.Popen("./ProgramA", stdin=subprocess.PIPE)
p.communicate("password")

運行程序B時,我的終端如下所示:

~/Desktop/$./ProgramB
Password: Here is your shell.
~/Desktop/$ (this is not the shell opened by program A)

我怎樣才能解決這個問題?

ProgramA啟動的shell從其父進程中繼承了stdin,因此它繼承了管道。 此時管道已經關閉,因此外殼退出。

您可能希望將終端保留為stdin,但是很難偽造密碼輸入。

Popen.communicate()關閉子Popen.communicate() stdin並等待直到它終止-這是預期的行為。 您只需要p.stdin.write("password")

假設這是linux或osx,如果stdin是管道而不是終端,則程序通常會以不同的方式運行,並且它們也“繞過” stdin並讀取終端以獲取密碼。 在您的情況下,程序可能沒有看到終端並退出。 嘗試使用python pexpect模塊或閱讀其源代碼,以了解如何為stdin打開pty。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM