PWN工具介绍

  • Author:ZERO-A-ONE
  • Date:2021-07-02

一、PWNTOOLS

1.1 程序的启动与远程连接

  • 使用process接口启动程序
    • 常用:process(argv,env),例如:
      • process('./demo'):执行可执行文件demo
      • process(['cat','flag]):执行命令cat flag
      • process("./demo",env={'LD_PRELOAD':'./libc.so.6'}):以指定环境变量运行文件
    • 当程序运行于远程时,提供了Host和监听端口
      • 使用remote接口进行连接:remote(host,port)

1.2 常用交互操作

  • 在通过process或者remote获得一个对象后
    • send(string):发送string
    • sendline(string):发送string及换行符
    • sendafter(magic,string):接收到magic后,发送string
    • sendlineafter(magic,string):在接收到magic后,发送string及换行符
    • recvn(N):接收N字节字符
    • recvline():接收一行输出
    • recvlines(N):接收N行输出
    • recvuntil(magic):一直接收直到接收到magic字符串为止

1.3 设置context

  • context.log_level:设置log级别

    • warn、error、debug
    • 例如:当log_level为debug时,会输出所有交互数据
  • context.arch:设置程序架构

    • amd64、i386、mips、arm…
    • 设置完成架构后,会自动全局设置,例如:生成shellcode时shellcraft、asm不用指定a架构
  • context.terminal:设置新启命令的格式

    • 例如:[‘tmux’,‘split’,’-h’],当调用gdb.attach(),不会新启动一个终端,而是利用tmux split -h gdb,分割当前终端
  • context.endian:设置大小端

    • big/little:和arch类似

1.4 数据的封装

  • Pwntools本身提供了一套数据封装的接口,可以将大小端数据转换为整数或者将整数转换为对应大小端数据
    • p64/p32/p16/p8:对应封装64/32/16/8位数据
    • u64/u32/u16/u8:解码64/32/16/8位数据到整数

1.5 ELF的解析

  • Pwntools中的ELF接口可以解析ELF文件:
    • 使用got[]可以查看got表对应地址
    • 使用plt[]可以查看对应plt表项对应地址
    • 使用symbols查看对应符号函数/数据所在地址
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值