小白一枚,初学轻喷
0x01.pwntools简介
pwntools 是一款专门用于CTF Exploit的python库,能够很方便的进行本地与远程利用的切换,基本涵盖了pwn题利用脚本所需要的各种工具。
0x02.pwntools安装
在Ubuntu中安装,这个是python2的,python3不能pip安装,还要安装其他东西,在这里就不详述了
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模块
from pwn import *
连接
本地:p = porcess("./文件名")
远程:p = remote("地址",端口)
关闭连接:close()
# p是看个人的
接收数据
recv()
recvall()
recvline("World")
# recv()接收指定个字节
# recvall()会一直接收到文件EOF(文件结束符)
# recvline()接收到指定数据结束
asm()函数接收一个字符串为参数,得到汇编码的机器代码
asm(shellcraft.sh)
shellcraft模块是shellcode的模块,包含一些生成shellcode的函数 例:
1. >>>asm('mov eax, 0')
2. '\xb8\x00\x00\x00\x00'
Context设置
context是pwntools用来设置环境的功能。一些二进制文件的情况不同,设置环境来正常运行exp,例如一些时候需要进行汇编,32位汇编和64位汇编不同,若不设置context可能会导致一些问题
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
数据打包
p32/p64:打包一个整数,分别为32位或64位 u32/u64:解包一个字符串,得到整数 p->pack 打包 u->unpack 解包
payload = p32(0xabcdefgh)
# 打包一个32位的整数
数据输出
some_str = "Hello_world"
log.info(some_str)
info位log等级,Logger就是日志记录器
参考:https://blog.csdn.net/weixin46436680/article/details/105784528 http://brieflyx.me/2015/python-module/pwntools-intro/ https://www.jianshu.com/p/8d6b605eb7fc https://blog.csdn.net/qq29343201/article/details/51337025?utm_source=app
平顶山学院· 沙漏安全团队
微信号|SLteam666
奋发努力|拼搏向上
本期编辑|yu jian