盒子
盒子
Posts List
  1. 0x01.pwntools简介
  2. 0x02.pwntools安装
  3. 0x03.pwntools的常用模块
  4. 0x04pwntools的简单使用
    1. 用于导入pwntools模块
    2. 连接
    3. 接收数据
    4. Context设置
    5. 数据打包
    6. 数据输出

pwntools安装与简单使用(初学习持续更新)

小白一枚,初学轻喷

0x01.pwntools简介

pwntools 是一款专门用于CTF Exploit的python库,能够很方便的进行本地与远程利用的切换,基本涵盖了pwn题利用脚本所需要的各种工具。

0x02.pwntools安装

在Ubuntu中安装,这个是python2的,python3不能pip安装,还要安装其他东西,在这里就不详述了

1
sudo pip install pwntools

0x03.pwntools的常用模块

Pwnlib.asm 通过capstone进行汇编与反汇编,支持x86/x64/arm/mips/powerpc等基本上所有的主流平台
Pwnlib.dynelf 用于远程符号泄漏,通过leak数据来自动化定位程序中函数位置(极其实用)
Pwnlib.elf 对elf文件进行读写(实用方便)
Pwnlib.gdb 配合gdb进行调试
Pwnlib.memleak 用于内存泄漏,可拼接多次泄露出来的内存
Pwnlib.shellcraft shellcode的生成器
Pwnlib.tubes 包括tubes.sock, tubes.process, Pwnlib.tubes.ssh, tubes.serialtube,分别适用于不同场景的PIPE
Pwnlib.utils 一些实用的小功能,例如CRC计算,cyclic pattern等
Pwnlib.rop rop生成工具,可以直接生成32位rop

0x04pwntools的简单使用

用于导入pwntools模块

1
from pwn import *

连接

1
2
3
4
本地:p = porcess("./文件名")
远程:p = remote("地址",端口)
关闭连接:close()
# p是看个人的

接收数据

1
2
3
4
5
6
recv()
recvall()
recvline("World")
# recv()接收指定个字节
# recvall()会一直接收到文件EOF(文件结束符)
# recvline()接收到指定数据结束

asm()函数接收一个字符串为参数,得到汇编码的机器代码

1
asm(shellcraft.sh)

shellcraft模块是shellcode的模块,包含一些生成shellcode的函数
例:

1
2
1. >>>asm('mov eax, 0')
2. '\xb8\x00\x00\x00\x00'

Context设置

context是pwntools用来设置环境的功能。一些二进制文件的情况不同,设置环境来正常运行exp,例如一些时候需要进行汇编,32位汇编和64位汇编不同,若不设置context可能会导致一些问题

1
context(os='linux', arch='amd64', log_level='debug')

1.os是设置系统为Linux系统
2.arch是设置架构为amd64,可以简单的认为设置为64位的模式,32位对应’i386’
3.log_level设置日志输出等级为debug,这句话在调试的时候一般会设置,这样pwntools会将完整的io过程都打印下来,使得调试更加方便,可以避免在完成CTF题目时出现一些和IO相关的错误
补充:
1.日志输出等级由高到低:debug<info<error<fatal
2.
info 用于打印程序应该出现的正常状态信息,便于追踪定位
warn 表明系统出现一些轻微错误,但不影响运行和使用
error 表面出现了系统错误和异常,无法正常完成目标操作

数据打包

p32/p64:打包一个整数,分别为32位或64位
u32/u64:解包一个字符串,得到整数
p->pack 打包
u->unpack 解包

1
2
payload = p32(0xabcdefgh)
# 打包一个32位的整数

数据输出

1
2
some_str = "Hello_world"
log.info(some_str)

info位log等级,Logger就是日志记录器

参考:https://blog.csdn.net/weixin_46436680/article/details/105784528
http://brieflyx.me/2015/python-module/pwntools-intro/
https://www.jianshu.com/p/8d6b605eb7fc
https://blog.csdn.net/qq_29343201/article/details/51337025?utm_source=app

支持一下
扫一扫,支持forsigner
  • 微信扫一扫
  • 支付宝扫一扫