pwntools语句的简单使用,包含例子
pwntools語(yǔ)句講解
連接
本地 :io = porcess("./文件名")
遠(yuǎn)程:io = remote(“ip地址”,端口)
關(guān)閉連接:io.close()
發(fā)送 payload
io.sendafter(some_string, payload) 接收到 some_string 后, 發(fā)送你的 payload;
p.sendlineafter(some_string, payload) 接收到 some_string 后, 發(fā)送你的 payload,加個(gè)換行
p.send(payload) 發(fā)送 payload
p.sendline(payload) 發(fā)送 payload,并進(jìn)行換行(末尾\n)
接收返回內(nèi)容
p.interactive() 直接進(jìn)行交互,相當(dāng)于回到shell的模式,一般在取得shell之后使用
生成 shellcode:
asm(shellcraft.sh())
p.recvn(N) 接受 N(數(shù)字) 字符
p.recvline() 接收一行輸出
p.recvlines(N) 接收 N(數(shù)字) 行輸出
p.recvuntil(some_string) 接收到 some_string 為止
stack=int(p.recv(10),16) 接收回顯的參數(shù)在棧上的地址,長(zhǎng)度是10,以16進(jìn)制表示
ELF
首先需要 elf=ELF(’./filename’) 來(lái)產(chǎn)生一個(gè)對(duì)象
elf.symbols[‘a(chǎn)_function’] 找到 a_function 的地址
elf.got[‘a(chǎn)_function’] 找到 a_function的 got
elf.plt[‘a(chǎn)_function’] 找到 a_function 的 plt
elf.next(e.search(“some_characters”)) 找到包含 some_characters 可以是字符串,匯編代碼或者某個(gè)數(shù)值的地址
ROP
rop = ROP(’./filename’) 還是要先創(chuàng)建一個(gè)對(duì)象
rop.raw(‘a(chǎn)’*32) 在構(gòu)造的 rop 鏈里面寫(xiě) 32 個(gè) a
rop.call(‘read’, (0, elf.bss(0x80))) 調(diào)用一個(gè)函數(shù),可以簡(jiǎn)寫(xiě)成:rop.read(0, elf.bss(0x80))
rop.chain() 就是整個(gè) rop 鏈,發(fā)送的 payload
rop.dump() 直觀地展示當(dāng)前的 rop 鏈
rop.migrate(base_stage) 將程序流程轉(zhuǎn)移到 base_stage(地址)
rop.unresolve(value) 給出一個(gè)地址,反解析出符號(hào)
rop.search(regs=[‘ecx’,‘ebx’]) 搜索對(duì) eax 進(jìn)行操作的 gadgets
rop.find_gadget([‘pop eax’,‘ret’]) 搜索 pop eax ret 這樣的 gadgets
總結(jié)
以上是生活随笔為你收集整理的pwntools语句的简单使用,包含例子的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 二进制安全需要记住的取值范围 int8,
- 下一篇: 解决fatal: 不是一个 git 仓库