PWN工具的使用

0x1.ida

指令 用法
h 将数据进行10进制和16进制转换
r 将数据进行字符和数字的转换
n 对变量和函数等进行重命名
x 查看函数的引用
y 修改数据的类型
shift+e 查看一些数据
tab 汇编和c语言之间转换

0x2.gdb

指令 用法
si 单步执行(进入)
ni 单步执行(不进入)
finish 直接运行到函数的结束
watch 监控一个内存的值(值如果改变,就会断点)
b 断点
info b 查看断点
x 查看内存数据(一般不单独用)
命令格式如下:
x /nfu addr

n表示一个正整数,f是查看的格式,u表示几个字节(默认4字节)

参数 f 的可选值:
x 按十六进制格式显示变量。
d 按十进制格式显示变量。
u 按十六进制格式显示无符号整型。
o 按八进制格式显示变量。
t 按二进制格式显示变量。
a 按十六进制格式显示变量。
c 按字符格式显示变量。
f 按浮点数格式显示变量。

参数 u 的可选值:
b 表示单字节
h 表示双字节
w 表示四字节
g 表示八字节

del 删除断点
info r 查看寄存器的值
vmmap 查看虚拟内存的布局
search 找一个字符串
p 查看内存数据
stack 查看栈里的数据
bt 查看栈里函数调用
heap 查看堆
bins 查看管理堆链表

0x3.ROPgadgets

指令
使用格式: ROPgadget –binary filename
查找字符串: ROPgadget –binary filename –string stringname

0x4.one_gadget

使用格式 one_gadget filename

0x5.pwntools

shellcode asm(shellcraft.amd64.linux.sh(),arch=”amd64″) 32位是i386
LibcSearcher libc = LibcSearcher(“read”, read)
libc_base = read – libc.dump(“read”)
bin_sh = libc_base + libc.dump(“str_bin_sh”)
ELF(“libc_name”) libc = ELF(“libc_name”)
libc_base = read – libc.sym[“read”]
bin_sh = libc_base + libc.searcher(“/bin/sh”) 也可以查找程序内字符串
debug context(log_level=”debug”,os=”linux”,arch=”amd64″)
gdb gdb.attach(sh,”b *addr”)
gdb.attach(sh)
泄露got表 payload = u32(elf.got[“puts”] )+ ‘%6$s’
修改got表 payload = fmtstr_payload(6,{elf.got[“printf”]:system_addr})
6为相对printf的偏移量,将printf的got表的地址修改为system的地址

原文地址:http://www.cnblogs.com/Starry-blog/p/16798820.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性