2013-03-13 81 views
1

假設我們有一個函數緩衝區溢出漏洞,覆蓋功能參數,包括返回地址

foo(char *name,int id) 
{ 
printf ("%s%d",name,id); 
} 

利用緩衝區溢出,我們在更換棧以foo函數的地址上的返回地址。我能夠做到這一點。

我該如何溢出函數參數呢?富有兩個參數,有人可以幫助我瞭解如何使用緩衝區溢出溢出這些參數。

+0

爲什麼要覆蓋參數?通常情況下,您只需覆蓋返回地址並解決一些會導致跳轉到shellcode的指令。 – Gumbo 2013-03-13 17:54:28

+0

是的你的權利,但我的目的不是跳轉到shell代碼。而是看看是否可以覆蓋堆棧中的函數參數。 – 2013-03-14 05:31:25

+0

更清楚,當函數被調用 - 我可以給我自己的自定義參數,該功能? – 2013-03-14 07:06:27

回答

0

理論上,當函數被調用但是成功覆蓋取決於堆棧的佈局時,參數被壓入堆棧。同樣,從你的目標來看,你必須以某種方式做到這一點,以免破壞它們之間的數據。

上面的代碼也有另外一個漏洞,想想吧。

+1

是的,它有格式字符串漏洞。我想學習覆蓋堆棧的佈局。| 我試過下面輸入,但我面對分段錯誤... +「EBP」 +「返回地址」 +「ARG1」 +「Arg2所得」,「字符串緩衝Lenght」 – 2013-03-25 10:53:14