npm 包 simplepwntools 使用教程

简介

simplepwntools 是一款基于 Node.js 平台的 npm 包,它提供了一系列方便的工具函数,用于编写和调试二进制文件的利器。同时它也支持 x64 和 x86 的架构,用户可以根据自己的需求进行选择。

安装

安装 simplepwntools 只需要使用 npm 或者 yarn 即可:

--- ------- --------------

--

---- --- --------------

使用

入门示例

下面是一个简单的利用 simplepwntools 编写的 exp:

----- - ---- ----- ------ - - -------------------------

----- ----------- - ---------
----- ---- - -------
----- ------- - -----------

--- - - -----
    ------------ ------------
    ----- -----
    -------- -------
--

-- -- ---- -----
--- -------- - ------------------------------- ----------------
----------------- ----- - - ---------

-- -- -----------
--- -- - -----------
--- -------- - --------------------
---------------------

-- -- -------
--- ------- - ----------------
------- -- -------------- - ---------------

-- - ------ -- -------
--------------------

-- -- ------ -----
-------- - --------------------
---------------------

-- ----
----------

以上示例代码演示了如何使用 simplepwntools 跑出一份简单的 exploit,可以看出来,simplepwntools 中几乎所有的工具函数都带有一个固定的参数 p,它用来指定当前利用的平台和相应的进程信息。

pwn 函数

pwn 函数中,最核心的便是交互式 shell 的开启:

--- - - -----
    ------------ ------------
    ----- -----
    -------- -------
--

pwn 函数支持以下几个参数:

------------ ---
----- -- ----
-------- --- -----
-------- ------------- --

其中,processName 和 port 只需要指定选一个即可,具体哪一个要依赖于二进制文件的类型,比如说:

  • 如果是一个纯本地(local)的程序,则需要指定 processName;
  • 如果是一个需要网络通讯的程序(比如要求客户端使用 nc 连接到程序),则需要指定 port。

elfPath 是每个 exp 参数最基本也是必选的参数,其作用是告诉 simplepwntools 需要利用的程序的路径。

timeout 等参数都是辅助性质的,用于配置 exp 的更多特性。

接下来的函数

connect 函数

connect 函数用于建立和程序的交互,返回的结果是一个 io 流对象,用于之后的接收和发送信息。

--- -- - -----------

send 和 recv 函数

发包(send)和收包(recv)两个函数为 exp 编写提供了一个流畅的交互接口。

----------------
---------

以上是简单的示例,在实际使用过程中,还可以直接在函数后面接 sendline 或者 recvline 表示一次完整的读写,像下面这样:

--------------------
--- -------- - ------------------------
---------------------

gdb 调试

gdb 调试是 binary pwn 的基本技能之一,simplepwntools 也提供了 gdb 调试的接口,用于编写更加高级的 exp。

--------------------

gdb.run 函数需要传入一个 gdbscript,用于描述 gdb 的调试命令。比如:

-------------
- --------
---
- ---- ---
--

执行 run 命令,会让程序跑起来,同时下一条指令地址会出现在 gdb 上方的第一行。

info proc mappings 可以查看当前程序的内存地址映射情况,ps aux 可以查看程序的进程号,以及当前进程的 pid,都十分有用。

总结

通过本文的讲解,读者可以初步了解 simplepwntools 的基本使用和部分高级用法,建议多使用和学习,好和其他工具搭配使用,做出不同层面的 exploit,不断挑战自己。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/60066b5b51ab1864dac66fd9


猜你喜欢

  • npm 包 tiam 使用教程

    简介 tiam 是一个用于操作时间的 npm 包,提供了常见的时间操作和计算功能,包括时间格式化、时区转换、时间加减等。 本文将详细介绍 tiam 的安装、使用方法和常见操作示例,帮助前端开发者更好地...

    3 年前
  • npm 包 @khard/material-ui-0.18.7-popover-fix 使用教程

    简介 @khard/material-ui-0.18.7-popover-fix 是在 material-ui(React UI 库) 的基础上修复 Popover 组件在弹出时会出现滚动条的bug的...

    3 年前
  • npm 包 redux-nara 使用教程

    作为一款流行的前端框架,Redux 能够帮助我们更好地管理应用的状态,并且提供了可预测性、可测试性、可维护性等许多优势。而在应用 Redux 时,常常需要处理复杂的数据流和不同层级的组件之间的通信,这...

    3 年前
  • npm 包 check-eos-watchdoggiee 使用教程

    介绍 check-eos-watchdoggiee 是一款用于监控 EOS 节点是否正常运行的 npm 包。该包可以定期的向一个特定的账户发送一个事务来确保 EOS 节点的正常运作,并且可以设置最大的...

    3 年前
  • npm包mbank-api使用教程

    在前端开发中,我们经常需要调用API来获取数据或者实现某些功能。今天,我们要介绍一个非常便捷的npm包——mbank-api,这个npm包提供了很多丰富的API,能够轻松地实现一些常见的金融业务场景,...

    3 年前
  • npm 包 @alekmarinov/observablestore 使用教程

    前言 前端开发过程中经常需要使用状态管理机制,而 observable pattern 是其中一种优秀的实现方式。在 JavaScript 中,大多数的前端框架提供了自己的观察者模式实现,例如:rea...

    3 年前
  • npm 包 gml-tools-langserver 使用教程

    前言 在前端开发过程中,我们经常会用到各种 npm 包以辅助我们开发工作。而其中一个非常有用的 npm 包就是 gml-tools-langserver。这个包使用了语言服务器协议(Language ...

    3 年前
  • npm 包 components-transform 使用教程

    作为一个前端开发者,我们写代码时常常需要使用各种各样的组件。但是在不同项目和团队中,组件库的使用习惯往往不同,这给我们带来了不小的麻烦。npm 包 components-transform 就能够帮助...

    3 年前
  • npm 包 apricotlace-gen-diff 使用教程

    简介 在前端开发中,版本控制是非常重要的,而不同版本之间代码的差异也需要被记录下来。aprictolace-gen-diff 是一款 npm 包,可以帮助开发者生成两个文件或文件夹之间的差异,并输出成...

    3 年前
  • npm 包 throw-return-swap 使用教程

    简介 throw-return-swap 是一个针对 JavaScript 中的 Synchronous 和 Asynchronous Functions 的轻量级包装库。

    3 年前
  • npm 包 appolodoro-uploadimage 使用教程

    介绍 appolodoro-uploadimage 是一个基于 React 的 npm 包,用于实现图片上传功能。它支持图片的本地选择、拍照上传、进度条展示等操作。

    3 年前
  • npm 包 react-affected-style-loader 使用教程

    介绍 在前端开发中,我们通常需要为页面定制样式表,并在运行时根据不同的状态(例如页面大小的变化)动态地修改样式。这需要我们使用一些辅助工具来完成,其中一个非常实用的工具就是 react-affecte...

    3 年前
  • npm 包 react-native-payment 使用教程

    在移动端开发中,支付功能是必不可少的一部分。而 react-native-payment 包就是专门针对 React Native 开发的支付库,可以快速集成支付宝和微信支付等支付功能。

    3 年前
  • npm 包 alfred-lidwoord 使用教程

    在日常的前端开发中,定期需要进行英文单词的查阅和翻译,而 alfred-lidwoord 是一个非常方便的 npm 包,可以将我们查找的单词快速翻译成中文,以提高学习和开发效率。

    3 年前
  • npm 包 bi-vantage-auth-basic 使用教程

    简介 bi-vantage-auth-basic 是一个 npm 包,该包提供了基于 HTTP 的基本身份验证功能,特别适用于 BI-Vantage 平台的前端开发项目中,可以帮助前端开发人员轻松实现...

    3 年前
  • npm 包 @khard/material-ui-flat-pagination-2-1-1 使用教程

    前言 在前端开发中,我们常常需要进行分页处理。而使用现成的分页组件库,能够帮助我们快速地实现分页功能,降低代码开发难度。本文介绍的 npm 包 @khard/material-ui-flat-pagi...

    3 年前
  • npm包bi-vantage使用教程

    在前端开发过程中,我们需要不断地更新依赖的库和工具,为此npm包成为了高度依赖的前端包管理工具。bi-vantage是一款实用的可视化组件库,它提供了基础的图表、表格、文本以及布局等常见组件。

    3 年前
  • npm 包 atlas-components 使用教程

    Atlas-components是一个开源的前端组件库,它提供了许多实用的组件,可以帮助开发者更快捷地搭建Web页面。在本文中,我们将详细介绍如何使用npm来安装和使用atlas-components...

    3 年前
  • npm 包 tre-compositor 使用教程

    前言 在前端开发中,随着复杂度的提升,组件的数量和关联性也在不断增加。因此,如何有效地管理和组合组件成为一个重要的问题。在这个时候, tre-compositor 这个 npm 包就能够派上用场。

    3 年前
  • npm 包 cordova-plugin-audio-recorder 使用教程

    在移动应用开发中,常常需要进行音频或视频录制功能的开发。而 Cordova 是一款非常流行的开源移动应用开发框架。cordova-plugin-audio-recorder 是一款用于 Cordova...

    3 年前

相关推荐

    暂无文章