發送二進位資料到 gets()

發送二進位資料到 gets()

我有一個受害者程式(具有緩衝區溢位漏洞):它使用 gets() 寫入固定大小的緩衝區。

假設我將 shellcode 放入檔案 SC.然後我跑

$ ./victim < SC
Input your data: 
$

shellcode 似乎不起作用的原因是這樣的:SC 被重定向到受害者,注入 shellcode,導致 shell 生成,但生成的 shell 發現其 stdin 已關閉,因此立即退出。

我嘗試expect注射,但expect砲彈生成後會爆炸。

似乎唯一實用的方法是將 shellcode 放入滑鼠的貼上緩衝區中,這樣我就可以注入它,同時保留鍵盤作為輸入裝置。但我不知道如何將二進位資料放入我的貼上緩衝區中。

關於如何解決這個問題有什麼想法嗎?

答案1

這個問題的解決方案(有人在相同的上下文中遇到過)在這裡: https://stackoverflow.com/questions/8509045/execve-bin-sh-0-0-in-a-pipe

答案2

您可以使用一個簡單的腳本來實現這一點,在該腳本中列印特殊字元。

例如,在 Perl 中,您可以透過指定其十六進位代碼來列印任何字元。例如: perl -e 'print "\x54\x0A"'列印一個“T”,後面跟著一個新行。

然後,您可以複製列印的文本,即使它不可見。當然,您的終端必須處於原始模式。

相關內容