這個問題與前一個問題Previous QuestionLinux的緩衝區溢出返回到libc中
前一個問題的後續行動,通過改變可執行文件的權限與execstack
解決。我的新問題圍繞另一個實現繞過堆棧執行保護。這使用return-to-libc並且涉及針對system()
的地址執行/bin/sh
。
我目前使用下面的代碼:
#include <stdio.h>
void func(char *buff){
char buffer[5];
strcpy(buffer, buff);
printf("%s\n", buffer);
}
int main(int argc, char *argv[]){
func(argv[1]);
printf("I'm done!\n");
return 0;
}
我的問題occures當我需要溢出的func()
返回地址到地址0x00167100
。當我執行緩衝區溢出時,我使用的參數是$(echo -e "\x00\x71\x16\x00")
。但是,在\x71
從我的論點中刪除之前,問題是最不重要的\x00
。事實上,我可以使用\x00\x00\x00\x00\x00...\x71\x16\x00
,而傳入的參數仍然是\x71\x16\x00
。最終的結果是一些像0x08001671
之前的覆蓋地址,當它真的應該是0x00167100
。
這是什麼問題? – 2012-03-31 00:01:54
@OliCharlesworth爲什麼我失去了這些特定的字節。 – Blackninja543 2012-03-31 00:07:49