Skip to main content

pwntools with vagrant integration

Project description

VAGD

Vagrant integration in pwntools

Installation

pip install vagd

or

pip install .
pip install -r requirements.txt

Usage

use template.py and copy it to exploit.py fill out the constants

# run as process in VM
./exploit.py
# run as gdb server in VM requires tmux
./exploit.py GDB
# run on remote IP:PORT
./exploit.py REMOTE

I recommend using pwndbg.

Features

Vagd

Constructor for Vagd, initializes a new vagrant machine (if non existent)

Parameters:

required experimental name type description
X binary str binary to debug on vagrant vm
vagrantfile str location of Vagrantfile
vbox str vagrant box to use
files str | tuple other files to upload to vm, all files are uploaded to current working directory (home or tmp)
tmp bool if the created directory in the vm should be temporary, requires new upload after each execution
X fast bool fast debug, mounts library files locally with sshfs in newly created directory ./sysroot/lib/ for faster symbol reading
x ex bool enables experimental features for the whole object

Vagd.system

executes command on vm, interface to pwnlib.tubes.ssh.ssh.system

Parameters:

required name type description
x cmd str command to execute on vm

Return: pwnlib.tubes.ssh.ssh.system

Vagd.debug Experimental

Executes the provided binary with gdbserver on the vm and and attaches gdb.

Parameters:

required experimental name type description
argv list[str] command line arguments for binary
exe str exe to execute
env Dict[str, str] Environment variables to pass through to binary
ssh Any ignored
gdbscript str gdbscript to execute after gdb sessions hast attached to server
X api bool if a gdb python api interface should be created, is set as attribute gdb in return object
X sysroot str the sysroot to use for gdb. Not applicable if fast is set in Vagd constructor
X gdb_args list[str] additonal gdb command line arguments to add to gdb
**kwargs Any allows the usage of other pwntool arguments

Return: pwn.process

Vagd.process

Executes the provided binary as process on vm

required name type description
argv list[str] command line arguments for binary
**kwargs Any allows the usage of other pwntool arguments

Return: pwn.process

Vagd.pwn_debug

Executes the provided binary with gdbserver on the vm and and attaches gdb.

required name type description
argv list[str] command line arguments for binary
**kwargs Any allows the usage of other pwntool arguments

Return: pwn.process

Vagd.start

uses pwn.args to swap between Vagd.process, Vagd.pwn_debug and Vagd.debug if experimental is enabled (in constructor or via ex=True)

Parameters:

required experimental name type description
argv list[str] command line arguments for binary
gdbscript str gdbscript to execute after gdb sessions hast attached to server
X api bool if a gdb python api interface should be created, is set as attribute gdb in return object
X sysroot str the sysroot to use for gdb. Not applicable if fast is set in Vagd constructor
X gdb_args list[str] additonal gdb command line arguments to add to gdb
X ex bool enables experimental features if not already enabled in constructor
**kwargs Any allows the usage of other pwntool arguments

Return: pwn.process

Boxes

the following boxes were tested and work, box constants are inside Vagd.box

  • ubuntu/jammy64
  • ubuntu/focal64
  • ubuntu/bionic64
  • ubuntu/xenial64

currently Vagrantfile generation is only compatible distributions that use apt

Project details


Release history Release notifications | RSS feed

This version

0.1.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vagd-0.1.1.tar.gz (20.4 kB view details)

Uploaded Source

Built Distribution

vagd-0.1.1-py3-none-any.whl (19.3 kB view details)

Uploaded Python 3

File details

Details for the file vagd-0.1.1.tar.gz.

File metadata

  • Download URL: vagd-0.1.1.tar.gz
  • Upload date:
  • Size: 20.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.9

File hashes

Hashes for vagd-0.1.1.tar.gz
Algorithm Hash digest
SHA256 c186f376909c66b17f851df0da9119907b91597ec3b5a9d02cbeaf0e2bd73950
MD5 fc7f43e7ddea53ca7170d821b4cdbf9a
BLAKE2b-256 ecf19ff488d6dbc36a4098f4fbbf518456ce94244f1dc8bc9d3b2fe56333874a

See more details on using hashes here.

File details

Details for the file vagd-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: vagd-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 19.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.9

File hashes

Hashes for vagd-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4d1e3b19a4dbfbb7e9d2b358737bc1824e4ef445784dceb99be015aaca8cfcdb
MD5 bfa07bd437447bd636665085db413daf
BLAKE2b-256 cc646845b9ead9b0e047440280c5507aa60f87b3dbb39345f453c39a4bc957e7

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page