源碼
編譯 :gcc -m32 -no-pie -fno-stack-protector -z execstack -o no no.c
要看ubuntu中是否是32位還是64位,
一開始查看安全機制
可以加一條命令可以關閉系統的地址隨機化
先查看是否在系統中ASLR是否打開 cat /proc/sys/kernel/randomize_va_space
如果是2,則開啓
需要關閉 sudo sh -c “echo 0 > /proc/sys/kernel/randomize_va_space” 當爲0時,
先理解下面這個圖:
因此可以構造 buffer = 填充字符 + jmp_eap_addr + shellcode
直接把文件拉進ida這就可以看出溢出,因爲strcpy函數在拷貝的時候超出了,棧的大小隻有0x48,這時我們需要覆蓋ebp
用pattern create 200
r
pattern offset 0x41344141
得到76
思路
1.剛開始接觸這些題時,首先想到的是往棧裏面填入數據,然後進行調用這個數據(shellcode)
2.這要有一個輸出函數和輸入函數,可以泄露libc—base,得到system和binsh的地址,這都在libc裏面
著:這裏因爲沒有開什麼機制,最好在裏面填充數據,跳轉我們的shellcode
腳本