Pwntools操作基本指令
Pwntools操作基本指令
from pwn import *
'''连接远程题目'''
r = remote('0.0.0.0',809) #usage:remote('host',port)
#exp code
r.interactive() #取得shell后可将commant传到terminal上
'''连接本地程序'''
p = process('./demo') #usage:process('binary',env)
context.terminal = ['tmux','splitw','-h'] #在tmux下可以切出视窗跑gdb
gdb.attach(p) #attach到gdb
#exp code
p.interactive()
'''recv'''
r.recv() #接收一个字节
r.recvline() #接受一行
r.recvlines(num) #接收(num)行
r.recvuntil(str) #一直接收直到碰到(str)
'''send'''
r.sned(payload) #发送payload
r.sendline(payload) #再最后面加上空字符
'''pack&unpack'''
p32(0xdeadbeef) #b'\xef\xbe\xad\xde'
p64(0xdeadbeef) #b'\xef\xbe\xad\xde\x00\x00\x00\x00'
hex(u32('\xef\xbe\xad\xde')) #'0xdeadbeef'
hex(u64('\xef\xbe\xad\xde\x00\x00\x00\x00')) #'0xdeadbeef'
'''payload用flat()连接'''
flat(['A'* 5,0xdeadbeef]) #b'AAAAA\xef\xbe\xad\xde'
#在flat()函数中,不用使用b'A'的形式
'''context(架构)'''
context.arch = 'amd64'
context.os = 'Linux'
context.endian = 'little' #小端序
context.log_level = 'debug'
'''shellcode & asm'''
asm(shellcraft.sh())
shellcraft.i386.mov('eax',0x20)
pwnlib.shellcraft.i386.linux.cat("flag", fd=1) #读取flag并输出,可以使用asm()包裹
'''ELF'''
e = ELF('elf_file') #寻找elf文件中的function
e.got['puts'] #puts在got表的地址
e.plt['puts'] #puts在plt表中的地址
'''libc'''
lib = ELF('libc.so.6') #寻找libc中的function
lib.symbols['system'] #寻找system的offset
lib.search('/bin/sh') #找/bin/sh的offset
'''ROP'''
rop = ROP('elf_file') #会产生一个空的rop链
rop.chain() #打印出当前的chain
rop.dump() #dump出chain在stack的样子
rop.raad(0,elf.bss(0x80)) #如果存在可以组成read(0,.bss+0x80)的gadgets,就加入rop chain
rop.raw('/bin/sh') #将/bin/sh字符串直接加入rop chain
A lion doesn't concern himself with the opinions of a sheep.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)