2012-10-13 85 views
4

對於教育的原因,我不得不利用的C代碼C:IFS系統()漏洞

的PROGRAMM設置EGID第一,然後用system("/usr/bin/...");命令漏洞。

所以我在我的主目錄做出了「USR」 executeable和設置的路徑首頁PATH=$HOME:$PATH

而且我想在bash的改變IFS的變量/:export IFS='/'

可惜的是,當我打電話給C程序員時:我的漏洞利用不起作用

有人能告訴我什麼是錯的嗎?

+0

歡迎來到堆棧溢出。這是你應該展示你作爲SSCCE嘗試過的一種情況([簡短,獨立,正確(編譯)例子](http://sscce.org/)),以證明你已經爲這個問題付出了一些努力,並讓我們看到你在做什麼。請儘快閱讀[常見問題]。 –

回答

3

我想我們是在同一所大學學習,因爲我目前面臨同樣的問題。我不想給你整個解決方案,因爲這太容易了=)

您的IFS變量不會被忽略,但它不會像您想象的那樣工作。當您調用C-Programm時,shell中會有一個額外的輸出,它指向較少的管道。隨着this linkand this german link中的信息,你可以解決challenge1;)

+0

是否只有一個漏洞?我沒有看到cat.c中的漏洞 – Lichtamberg

+0

我真的沒有得到..我也想和你一樣做同樣的事情...... – Lichtamberg

+1

cat示例可以很容易地通過向PATH變量添加條目來解決 – boindiil

4

添加IFS作爲程序調用system()的一部分。系統使用/usr/bin/sh -c執行代碼。所以你可以做類似於你在shell提示符下的操作。

system("export IFS='/'; /usr/bin/cmd"); 

注意,一旦子進程被終止,IFS組將不再是在父可用。

+0

我不能改變系統命令中的字符串。我必須利用它。所以我希望給定的系統(「/ usr/bin/...」)重定向到我的usr可執行文件。它類似於系統中的相對路徑(「./ myProg」)。我打算改變IFS變量,我也可以在這種情況下做到這一點?我錯了嗎? – nikmaster

+0

你能發佈一個完整的代碼嗎?我不確定你想要達到什麼目的? –