剑庭安
首页
黑客安全首页全部安全栏目 黑客技术黑客技术、渗透测试、漏洞利用工具与教程 安全软件安全工具、扫描器、检测与审计软件 病毒分析恶意软件分析、样本、逆向与沙箱 CTF思路CTF 题目、writeup、解题思路与工具 防护思路防御技术、加固、检测响应与蓝队 红蓝攻防红队攻击模拟、蓝队对抗、攻防演练 漏洞知识库漏洞、CVE、PoC、EXP 与安全研究
逆向|反编译
PHP源码PHP 网站源码、程序、系统 APP源码安卓/iOS APP 源码 ASP源码ASP 网站源码与程序 NET源码.NET 网站源码与系统 小程序源码微信/支付宝小程序源码 Dedecms风格模板Dedecms 织梦风格模板 Empirecms风格模板EmpireCMS 帝国风格模板 Discuz商业模板/插件Discuz 商业模板与插件 WordPress主题/插件WordPress 主题与插件 其它源码、模板其它各类源码与模板 游戏源码游戏源码与引擎项目 加密货币源码加密货币、区块链、钱包、USDT/比特币相关源码与工具 手游源码手机游戏源码、服务端、客户端与引擎项目 传奇源码热血传奇、传奇世界、复古传奇等客户端/服务端/引擎源码 页游源码网页游戏、H5 游戏、浏览器游戏源码 端游源码电脑单机游戏、PC 网游客户端/服务端源码
最新万能免驱动支持所有型号打印机下载程序 日历天气老黄历 · 每天同步真实日期与天气
站长工具站长工具 自助开通会员浏览该分类 其他资源qtziy SEO工具SEO工具 站群源码站群源码 泛程序泛程序 蜘蛛模板蜘蛛模板 蜘蛛池蜘蛛池 外链工具外链工具
搜索 自助开通会员🔓 破甲 API
登录 注册
首页 分类列表 CTF思路 pwncli - Do pwn by command l…
pwncli - Do pwn by command line CTF思路 点击放大
作者:admin 发布:2026-10-05

pwncli - Do pwn by command line

项目说明前言简介安装使用模式 - 命令行模式 - 脚本模式 - 库模式教程pwncli 主命令 - debug 子命令 - remote 子命令 - config 子命令 - list 二级子命令 - set 二级子命令 - misc 子命令 - gadget 二级子命令 - setgdb 二级子命…
资源可下载 免费下载 0 条讨论
会员资源
开通会员后即可下载全部资源。
登录后开通会员
会员方案
359浏览量
0讨论
2下载链接
可下载资源状态
内容可验证
更新 2026-10-05
人工审核发布
评论区答疑

pwncli - Do pwn by command line

项目说明

  • 前言

  • 简介

  • 安装

  • 使用模式

  • - 命令行模式
    - 脚本模式
    - 库模式
  • 教程

  • pwncli 主命令

  • - debug 子命令
    - remote 子命令
    - config 子命令
    - list 二级子命令
    - set 二级子命令
    - misc 子命令
    - gadget 二级子命令
    - setgdb 二级子命令
    - patchelf 子命令
    - qemu 子命令
    - template 子命令
  • 依赖库

  • 截图示例

  • - pwncli 示例
    - debug 示例
    - remote 示例
    - config 示例
    - misc 示例
    - patchelf 示例
    - qemu 示例

    > [!NOTE]
    > The deepwiki of pwncli: <

    前言

    一开始写这个工具是因为在学习pwn的过程中,经常反复的去注释和取消注释gdb.attach(xxx)这样的语句,下不同断点的时候要不断地修改脚本,本地调通打远程的时候也要改脚本。

    习惯命令行操作后,我设想能否设计一个命令行工具,能通过命令行参数去控制一些东西,避免在调试pwn题的时候重复地执行上面这些工作而只专注于编写解题脚本。当想法酝酿起来,自己便试着写下第一行代码,于是,pwncli就此诞生。

    工具的目的在于实用性,我觉得pwncli满足实用性要求,在调试pwn题时能节省大量的时间。

    如果你觉得pwncli好用,请介绍给周围的pwner。如果你还有任何疑问,请提交issue或,我将非常乐意与你讨论交流。如果你有好的想法,或者发现新的bug,欢迎提交pull requests。

    🏴🏴🏴 欢迎各位师傅关注我的个人博客,以下两个博客网站内容相同,互为备份。前者为github page,后者部署在国内阿里云服务器上。博客持续更新中~


  • 简介


    EN | ZH | API | VIDEO

    pwncli是一款简单、易用的pwn题调试与攻击工具,能提高你在CTF比赛中调试pwn题脚本的速度与效率。

    pwncli可以帮助你快速编写pwn题攻击脚本,并实现本地调试和远程攻击的便捷切换。pwncli支持三种使用模式:

  • 命令行使用模式

  • 脚本内使用模式

  • 库导入使用模式
  • 以上三种模式分别简称为:命令行模式、脚本模式和库模式。其中,命令行模式与其他命令行工具(如linux下的ls、tar等命令)使用方式相同,可用于本地交互调试;脚本模式可将自己编写的python攻击脚本包装为命令行工具,然后调用子命令执行所需功能;库模式则只会调用一些便捷的工具函数,方便快速解题。

    在下面的使用模式章节将会详细的阐述三种模式的使用方式与技巧。

    pwncli设计为主命令-子命令模式(与git类似),目前已拥有的(子)命令有:

    其中,pwncli为主命令,config/debug/misc/patchelf/qemu/remote为一级子命令,list/set为隶属config的二级子命令,gadget/setgdb为隶属misc的二级子命令。

    pwncli支持命令的前缀匹配(与gdb的命令前缀匹配类似),通常只需要给出命令的前缀即可成功调用该命令。即输入pwncli debug ./pwn、pwncli de ./pwn和pwncli d ./pwn的执行效果是完全一样的。但是,必须保证前缀不会匹配到两个或多个子命令,否则将会抛出MatchError的匹配错误。

    pwncli极易扩展。只需要在pwncli/commands目录下添加cmd_xxx.py,然后编写自己的子命令即可。pwncli会自动探测并加载子命令。例如,你想新增一个magic命令,你只需要:

    当需要移除该命令时,可以删除cmd_magic文件,或将其重命名为非cmd_开头即可。

    pwncli依赖于click 和 pwntools。前者是一款优秀的命令行编写工具,后者是pwner普遍使用的攻击库。

    总结pwncli的优点为:

  • 脚本只需编写一次,使用命令行控制本地调试与远程攻击

  • 调试过程中方便设置断点与执行其他gdb命令

  • 可轻松扩展并自定义子命令

  • 内置许多有用的命令与函数
  • 安装


    pwncli可以在linux和windows下使用,但在windows下使用受限严重,如debug命令将无法使用,remote命令仅部分可用。pwncli只能在python3环境上使用,目前暂不考虑与python2兼容。

    建议在ubuntu系统上使用pwncli,特别的,如果你了解WSL并选择使用WSL解答pwn题,pwncli + WSL将是一个极佳的选择。debug子命令为WSL系统设计了许多实用的参数,并实现了一些有趣的功能。

    如果你选择使用WSL,那么,请尽量保证发行版的名字(distribution name)为默认的Ubuntu-16.04/Ubuntu-18.04/Ubuntu-20.04/Ubuntu-22.04。debug命令的某些选项与默认发行版名称联系紧密。

    pwncli的安装方式有两种,第一种是本地安装(强烈建议使用此种方式安装):

    安装结束后,别忘了将pwncli所在的路径添加到PATH环境变量,其路径一般为~/.local/bin。可以在家目录下的.bashrc/.zshrc文件中添加export PATH=$PATH:/home/xxx/.local/bin。

    这种方式安装的好处是:当你需要pwncli保持更新时,只需要执行git pull即可使用最新版本的pwncli。

    第二种安装方式是使用pip3安装:

    这种方式安装的pwncli可能不是最新版本,会遇到一些已解决的bug。不过请相信我,我会及时将pwncli更新到pypi上去的。

    安装结束后,执行pwncli --,看到版本信息输出则代表安装成功。

    使用模式


    命令行模式


    你可以将pwncli视为一个命令行工具,虽然其本质是一个python脚本。使用pwncli -h或者pwncli --help将会获取到命令行的使用指导。如果你想获取某个子命令的使用指导,如debug命令,输入pwncli debug -h即可。

    脚本模式


    除了将pwncli当作命令行工具使用外,你还可以将脚本封装为一个命令行工具,之后,就能像使用pwncli一样使用这个脚本。
    脚本模式的使用非常简单,如你的攻击脚本为exp.py,在脚本中写下:

    然后,在命令行输入python3 exp.py -h即可获得和命令行模式下pwncli -h一样的输出。特别的,如果你在脚本的第一行指定了解释器路径,那么你可以输入./exp.py -h而无需显式输入python3。

    之后,你可以将exp.py当成pwncli,使用pwncli所拥有的各项命令与功能。

    当然,你可以丰富你的脚本,使其实现更多功能,如使用debug和remote命令时,你可以在脚本后面继续添加:

    熟悉pwntools的小伙伴对上面的脚本肯定不会陌生。从本质上来说,调用cli_script()后会解析命令行参数,之后将一些有用的数据放置在gift中。如你可以取出io,就是pwntools模块中的process或remote对象,并与其交互。

    库模式


    库模式,顾名思义,适用于你仅仅需要使用pwncli的一些函数或功能而不需要使用命令行解析参数的场景。你可以像使用其他python库一样使用pwncli,如在脚本中写下:

    不难发现,库模式与命令模式的使用区别:去掉cli_script()即可。需要注意,库模式下的脚本就是一个普通的python脚本,并不能解析命令行参数。

    教程


    视频教程如下:
    ![pwncli tutorial]( "pwncli tutorial")

    asciinema版本教程依次如下:

  • pwncli tutorial (1)

  • pwncli tutorial (2)

  • pwncli tutorial (3)

  • pwncli tutorial (4)
  • ![asciicast]()

    ![asciicast]()

    ![asciicast]()

    ![asciicast]()

    以下为简易的文字版教程。

    在使用pwncli之前,建议掌握gdb/tmux的基本命令,确保已安装了pwndbg/gef/peda等其中一个或多个插件。

    以脚本模式下的debug命令为例(这也是最常使用的模式和命令)。

    首先进入tmux环境,使用tmux new -s xxx进入即可。

    然后在脚本exp.py里写下:

    然后赋予脚本执行权限,然后输入./exp.py de ./pwn -t即可看到开启了tmux调试窗口。

    对于无PIE的程序,下断点的方式为:

    对于有PIE的程序,下断点的方式为:

    想要hook掉某些函数,如ptrace:

    使用带桌面的ubuntu虚拟机调试,可以选择gnome弹出窗口:

    脚本调试好后需要打远程:

    pwncli 主命令


    选项的相关说明:

  • flag选项:带上该选项即为开启,如ls -a中的-a即为flag选项

  • 多选的:可以指定多个值,如-x y1 -x y2可以传递y1和y2给x选项

  • 多种使用方式:如-x --xxx --xxx-xx,那么使用-x或者--xxx或者--xxx-xxx均可
  • pwncli命令为主命令,输入pwncli -h将得到以下输出:

    选项:

    命令(即pwncli下拥有的子命令):

    debug 子命令


    输入pwncli debug -h将得到以下帮助文档:

    debug子命令是最常用的子命令,为其设计的参数也最多,下面将详细讲述每一个参数的意义和使用方式。

    参数:

    选项:

    remote 子命令

    输入pwncli remote -h得到以下帮助:

    remote也是使用较多的子命令,用于远程攻击靶机。在本地调试好脚本后,只需要将debug命令替换为remote,并设置参数,即可开始攻击靶机,不需要更改脚本。

    参数:

    选项:

    config 子命令

    config子命令主要用于操作pwncli的配置文件,配置文件的路径为~/.pwncli.conf,其指导为:

    选项:

    命令:

    list 二级子命令

    输入pwncli config list -h获得如下输出:

    参数:

    选项:

    set 二级子命令

    输入pwncli config set -h获得如下输出:

    参数:

    选项:

    misc 子命令

    misc子命令是一个杂项命令合集,即其会包含许多二级子命令,每个二级子命令的功能都不一样。

    输入pwncli misc -h得到帮助信息:

    选项:

    命令:

    gadget 二级子命令

    输出pwncli misc gadget -h得到帮助信息:

    参数:

    选项:

    setgdb 二级子命令

    输出pwncli misc setgdb -h得到帮助信息:

    选项:

    其中gdb-pwndbg的内容为:

    patchelf 子命令

    使用patchelf修改二进制文件使用的libc.so.6和ld.so。使用该命令的前提是,已安装patchelf和glibc-all-in-one,并将各个版本的库文件放置在glibc-all-in-one/libs,该路径可在配置文件中配置。

    输入pwncli patchelf -h得到帮助信息:

    参数:

    选项:

    qemu 子命令

    该子命令方便使用qemu进行其他架构arm/mips文件的调试以及kernel pwn的调试。该命令的使用与debug子命令非常类似,很多选项与参数与debug子命令相同,使用方法也是一样的。在使用该子命令之前,请确保已安装了qemu和所需依赖库。

    输入pwncli qemu -h得到帮助信息:

    参数:

    选项:

    template 子命令

    该子命令方便生成各种攻击模板脚本文件,包括使用pwncli的命令行模式与脚本模式的攻击脚本,同时还提供了使用原生的pwntools需要使用到的模板。模板中定义了本地调试与远程攻击的相关代码,提供了常用的缩写函数,如sa/sla/r/rl等。

    输入pwncli template -h 得到帮助信息:

    其中,cli类型模板会使用pwncli的脚本模式,lib类型模板会使用库模式,pwn类型模板直接使用原始的pwntools来构建而不会使用pwncli。

    依赖库

    pwncli的依赖库清单如下所示:

    截图示例

    pwncli 示例

    !image-019621

    debug 示例

    pwncli - ./test:

    !image-116090

    pwncli - ./test -t:

    !image-356871

    pwncli de ./test -t -b main:

    !image-710687

    这个时候没有断住:

    pwncli de ./test -p -t -b main:

    !image-858593

    !image-946892

    pwncli de ./test -H puts:

    !image-434698

    pwncli de ./test -t -s "vmmap;b main":

    !image-628316

    pwncli de ./test -w:

    !image-900484

    pwncli de ./test -w -m wsl-u:

    !image-010903

    pwncli de ./test -w -m wsl-wts:

    !image-057770

    pwncli de ./test -t -g pwndbg:

    !image-152877

    pwncli de ./test -u:

    !image-307876

    remote 示例

    pwncli re ./test 127.0.0.1:10001:

    !image-042604

    pwncli -vv re ./test -i 127.0.0.1 -p 10001:

    !image-158851

    pwncli -vv re 127.0.0.1:10001:

    !image-248653

    config 示例

    pwncli config list example:

    !image-423624

    misc 示例

    pwncli misc gadget ./test:

    !image-602674

    sudo pwncli misc setgdb -g:

    !image-738869

    patchelf 示例

    pwncli patchelf ./test -b 2.31:

    !image-851991

    qemu 示例

    TODO

    项目信息

    开发语言:Python

    Star 数:437

    技术要点

    该项目属于CTF思路方向的开源资源,代码结构清晰,适合安全研究人员学习参考。项目围绕Do pwn by command line展开,提供了可运行的实现,对理解相关安全机制、工具原理与攻防技术具有较高的研究价值。

    从技术实现角度看,此类项目的核心在于对底层原理的深入理解与工程化落地。开发者在研究过程中可以结合官方文档与社区讨论,梳理项目的初始化流程、核心模块职责与数据流转,逐步掌握其中的技术细节与设计思路。

    使用与学习建议

    1. 下载源码压缩包,解压到本地环境。

    2. 根据项目类型准备对应的运行环境与依赖。

    3. 按照 README 中的步骤完成配置与部署。

    4. 在隔离的测试环境中运行验证,避免影响生产系统。

    免责声明

    本资源来源于开源社区,仅供安全研究、技术学习与合法授权范围内的攻防演练使用,请勿用于任何非法或侵害他人权益的用途。使用本项目产生的一切后果由使用者自行承担。

    资源标题pwncli - Do pwn by command line
    所属分类CTF思路
    发布作者admin
    发布时间2026-10-05 23:41:41
    下载权限 免费下载
    附件数量2 个下载链接
    浏览次数359
    讨论数量0
    主题状态正常讨论中

    本资源免费,登录后即可在本页「下载链接」区域获取全部附件。

    请在评论区留言说明具体链接,或联系作者补档。楼主更新后本页会同步最新的下载地址。

    请先阅读正文中的授权说明;未注明的默认仅限站内学习交流,禁止直接搬运到其他站点二次售卖。
    还没有讨论,快来抢沙发~
    登录 后才能参与讨论
    下载链接
    会员才能下载
    登录后开通会员
    同分类推荐
    暂无同类资源
    免费登录即可下载
    查看会员
    放大预览

    © 2026 剑庭安 - 网站开发定制 SEO 优化蜘蛛池代做 在线看手相算命. 保留所有权利。

    Powered by 酷像SEOv3.0

    网站地图 Sitemap.xml
    首页 全部分类 黑客安全 逆向|反编译 精品源码 站长工具自助开通会员其他资源SEO工具站群源码泛程序蜘蛛模板蜘蛛池外链工具创意乐园 搜索 会员服务 登录 注册