2017-2018-1 20155321 《信息安全系统设计基础》课下作业3
2017-2018-1 20155321 《信息安全系統(tǒng)設(shè)計基礎(chǔ)》課下作業(yè)3
課堂練習(xí)第五題
因為虛擬機是64位的,所以先輸入命令sudo apt-get install libc6-dev-i386為配置32位環(huán)境做準(zhǔn)備
使用gdb調(diào)試器,調(diào)出匯編代碼
使用命令l查看代碼并使用命令b 13在main()處設(shè)置斷點,后再輸入命令run,使用命令disassemble獲取匯編代碼,輸入命令info registers查看當(dāng)前各寄存器的值
可見此時主函數(shù)的?;窞?xffffd048,查看其內(nèi)容為0輸入命令display /i $pc使得每次執(zhí)行下一條匯編語句時,均打印出當(dāng)前執(zhí)行的代碼
調(diào)用f函數(shù),call指令將下一句要執(zhí)行的指令的地址入棧
將f函數(shù)的基地址入棧,可發(fā)現(xiàn)sp寄存器的值發(fā)生變化
執(zhí)行sub語句
執(zhí)行賦值語句
f函數(shù)的匯編代碼
實參入棧:
call指令將下一條指令的地址入棧:
執(zhí)行系列運算指令
pop %ebp指令將棧頂彈到%ebp中,同時%esp增加4字節(jié):
ret指令將棧頂彈給%eip:
因為函數(shù)f修改了%esp,所以用leave指令恢復(fù)。leave指令先將%esp對其到%ebp,然后把棧頂彈給%ebp:
緩沖區(qū)溢出漏洞實驗
緩沖區(qū)溢出:向緩沖區(qū)寫入超出預(yù)分配固定長度的數(shù)據(jù)。這一漏洞可以被惡意用戶利用來改變程序的流控制,甚至執(zhí)行代碼的任意片段。這一漏洞的出現(xiàn)是由于數(shù)據(jù)緩沖器和返回地址的暫時關(guān)閉,溢出會引起返回地址被重寫。
因?qū)嶒灅翘峁┑氖?4位的環(huán)境,因此首先要配置32位的環(huán)境,輸入以下三個命令,為之后的實驗做好準(zhǔn)備
輸入命令sudo sysctl -w kernel.randomize_va_space=0關(guān)閉系統(tǒng)使用地址空間隨機化來隨機堆和棧的初始地址
創(chuàng)建另一個shell程序(zsh)代替/bin/bash
編寫漏洞程序
編譯stack.c程序并設(shè)置SET-UID
編寫攻擊程序
得到shellcode在內(nèi)存中的地址
計算shellcode的地址并修改exploit.c中\(zhòng)x??\x??\x??\x??代碼,如下圖所示:
運行攻擊程序exploit和漏洞程序stack,通過攻擊得到root權(quán)限
轉(zhuǎn)載于:https://www.cnblogs.com/rafell/p/7750032.html
總結(jié)
以上是生活随笔為你收集整理的2017-2018-1 20155321 《信息安全系统设计基础》课下作业3的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 八年级上人教版英语书3页翻译
- 下一篇: 2017-2018-1 20155336