• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Gallopsled / pwntools / 3e4e8b70558ee5adb522415f07483b2f72fe0b96

pending completion
3e4e8b70558ee5adb522415f07483b2f72fe0b96

push

github-actions

web-flow
Add `--libc libc.so` argument to pwn template (#2212)

* Add ELF.set_runpath()

Shells out to the `patchelf` tool to patch the ELF's RUNPATH. This lets the dynamic loader look for needed shared libraries in the given path first before the system libraries when running the binary.

* Add ELF.set_interpreter()

Shells out to the `patchelf` tool to patch the ELF's PT_INTERP segment. This allows to change the ld.so used when running the binary.

* Add convenience wrapper to set runpath & interpreter

A helper function to patch the ELF such that it uses the dynamic loader and other libraries in the given folder.

* Add method to download libraries matching a libc

Download the matching libraries for the given libc binary and cache them in a local directory using `libcdb.download_libraries()`. The libraries are looked up using libc.rip and fetched from the official package repositories if available.

Only .deb and .pkg.tar.* packages are currently supported (Debian/Ubuntu, Arch).

* Add --libc argument to pwnup template

This generates code into the template which allows you to run the binary using the given libc.

The foreign libc is used by default, but you can choose to run the binary against your system's local libc using the `LOCAL_LIBC` command line argument when executing the exploit script.

* Work around Python 2 tarfile not supporting xz

* Fix crash when libc wasn't found on libc.rip

* Update README

* Use subprocess.check_output instead of pwnlib.process

* Special case Python 2 instead of 3

* Only catch Exceptions instead of everything

Co-authored-by: Arusekk <arek_koz@o2.pl>

* Check launchpad.net for Ubuntu libcs

This mimics the way io12/pwninit obtains the ld.so.
If the download from libc.rip fails, try launchpad.net.

* Hide comment in template when --quiet

* Please confused pylint in PY2 context

Co-authored-by: Arusekk <arek_koz@o2.pl>

---------

Co-authored-by: Arusekk <arek_koz@o2.pl>

3806 of 6339 branches covered (60.04%)

206 of 206 new or added lines in 3 files covered. (100.0%)

12369 of 16857 relevant lines covered (73.38%)

1.47 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

69.23
/pwnlib/filesystem/path.py
1
import six
2✔
2
import tempfile
2✔
3

4
if six.PY3:
2!
5
    from pathlib import *
×
6
else:
7
    from pathlib2 import *
2✔
8

9
@classmethod
2✔
10
def mktemp(cls):
11
    return cls(tempfile.mktemp())
×
12

13
@classmethod
2✔
14
def mkdtemp(cls):
15
    return cls(tempfile.mkdtemp())
×
16

17
Path.mktemp = mktemp
2✔
18
Path.mkdtemp = mkdtemp
2✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc