→ dododavid006: 1 你可以試試執行 env 它會印出目前的環境變數 但是 09/19 22:48
→ dododavid006: exec 系列除了 e 結尾的還是會繼承環境變數 09/19 22:49
→ dododavid006: 2 是說如果你的環境變數被修改 比如 PATH 那 system 09/19 22:50
→ dododavid006: 就可能執行到非預期的程式 這也會發生在 p 結尾的 09/19 22:50
→ dododavid006: exec 系列上 09/19 22:51
→ dododavid006: 還有一些情況是你需要傳入某些從外部輸入的東西給你 09/19 22:53
→ dododavid006: 呼叫的程式 用 system 你可能會用 sprintf 去組指令 09/19 22:53
→ dododavid006: 但是 system 執行的是 sh 也就是 sh 能做的事 09/19 22:54
→ dododavid006: system 也做的到 比如輸入裡有 ; 之類的 09/19 22:54
→ holishing: 想到也有 LinuxDev 板? 09/20 00:05
→ kdjf: 使用者執行你的suid程式代表你接下來執行的外部程式也有suid 09/20 12:15
→ kdjf: 的權限,除非你很清楚下一個程式的所有細節,不然天知道傳進去 09/20 12:17
→ kdjf: 的環境變數會做出什麼事,甚至是Arbitrary code execution 09/20 12:19
→ kdjf: exploit, bash還是哪個shell就有幹過這種事 09/20 12:19
推 Bencrie: bash 吧,當初還有命令可以直接測有沒有中 09/20 16:32
推 lantw44: 如果你的 /bin/sh 是 bash,可以試試看執行這個: 09/20 21:00
→ lantw44: env SHELLOPTS='xtrace' PS4='$(id)' ./your_program 09/20 21:00
→ lantw44: 這不只是 bash,像是 python 也有 PYTHONPATH 這種東西 09/20 21:17