我有一個受害者程式(具有緩衝區溢位漏洞):它使用 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”,後面跟著一個新行。
然後,您可以複製列印的文本,即使它不可見。當然,您的終端必須處於原始模式。