CTF常用python库PwnTools的使用学习

  之前主要是使用zio库,对pwntools的了解仅限于DynELF,以为zio就可以取代pwntools。后来发现pwntools有很多的高级用法都不曾听说过,这次学习一下用法,希望可以在以后的exp编写中能提供效率。

  PwnTools的官网如下:http://pwntools.com/

  安装方法是使用pip命令,pip install pwn。这样就可以安装上pwn库了。使用时用from pwn import *来进行调用。

连接

本地process()、远程remote()。对于remote函数可以接url并且指定端口。

IO模块

下面给出了PwnTools中的主要IO函数。这个比较容易跟zio搞混,记住zio是read、write,pwn是recv、send就可以了。

send(data) : 发送数据
sendline(data) : 发送一行数据,相当于在末尾加\nrecv(numb=4096, timeout=default) : 给出接收字节数,timeout指定超时
recvuntil(delims, drop=False) : 接收到delims的pattern
(以下可以看作until的特例)
recvline(keepends=True) : 接收到\n,keepends指定保留\n
recvall() : 接收到EOF
recvrepeat(timeout=default) : 接收到EOF或timeoutinteractive() : 与shell交互

ELF模块

ELF模块用于获取ELF文件的信息,首先使用ELF()获取这个文件的句柄,然后使用这个句柄调用函数,和IO模块很相似。

下面演示了:获取基地址、获取函数地址(基于符号)、获取函数got地址、获取函数plt地址

>>> e = ELF('/bin/cat')
>>> print hex(e.address)  # 文件装载的基地址
0x400000
>>> print hex(e.symbols['write']) # 函数地址
0x401680
>>> print hex(e.got['write']) # GOT表的地址
0x60b070
>>> print hex(e.plt['write']) # PLT的地址
0x401680

数据处理

主要是对整数进行打包,就是转换成二进制的形式,比如转换成地址。p32、p64是打包,u32、u64是解包。

DynELF

DynELF是leak信息的神器。前提条件是要提供一个输入地址,输出此地址最少1byte数的函数。官网给出的说明是:Given a function which can leak data at an arbitrary address, any symbol in any loaded library can be resolved.

很叼啊,有木有。以下是官方例程

# Assume a process or remote connection
p = process('./pwnme')# Declare a function that takes a single address, and
# leaks at least one byte at that address.
def leak(address):data = p.read(address, 4)log.debug("%#x => %s" % (address, (data or '').encode('hex')))return data# For the sake of this example, let's say that we
# have any of these pointers.  One is a pointer into
# the target binary, the other two are pointers into libc
main   = 0xfeedf4ce
libc   = 0xdeadb000
system = 0xdeadbeef# With our leaker, and a pointer into our target binary,
# we can resolve the address of anything.
#
# We do not actually need to have a copy of the target
# binary for this to work.
d = DynELF(leak, main)
assert d.lookup(None,     'libc') == libc
assert d.lookup('system', 'libc') == system# However, if we *do* have a copy of the target binary,
# we can speed up some of the steps.
d = DynELF(leak, main, elf=ELF('./pwnme'))
assert d.lookup(None,     'libc') == libc
assert d.lookup('system', 'libc') == system# Alternately, we can resolve symbols inside another library,
# given a pointer into it.
d = DynELF(leak, libc + 0x1234)
assert d.lookup('system')      == system

 

转载于:https://www.cnblogs.com/Ox9A82/p/5728149.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/356933.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

账号被暂时禁用使用VScode不能上传代码的解决办法

最近项目在开发的过程中突然不能提交代码,然后使用git账号登录gitee,发现账号账号不能登录了,不知道什么原因导致的禁用,这个账号sunjiaoshou01是被行方同步数据导致的禁用,一问管理员就说是可能一个月没登录会自动封禁…

地图库地之图地图窝_「方舆」秦朝地图及行政区划

秦朝是中国历史上一个极为重要的朝代,由战国时期的秦国发展起来的统一大国,它结束了自春秋起五百年来分裂割据的局面,成为中国历史上第一个大一统的中央集权制国家。秦朝统一六国时,国土面积为214万平方公里,后北收河套…

server端推送消息机制

推送技术相关请参加WIKI: https://zh.wikipedia.org/wiki/%E6%8E%A8%E9%80%81%E6%8A%80%E6%9C%AF 场景: 监控系统:后台硬件温度、电压发生变化;即时通信系统:其它用户登录、发送信息;即时报价系统&#xff…

智能柜台C端代码规范

语法上建议:一、建议尽量使用””代替””上述比较好上述HX0188是一个字符串,用!替代比较好二、引用的组件/插件在当前vue文件内并未使用例:chk_bcip\src\business\common\views\ common-auditwait.vueDevice._$和Utils.AppUtils 都未使用&am…

天才密码 编程_不成为编程天才的5种贡献方式

天才密码 编程安迪莱斯特(Andy Lester)在三月份发布了最初的指南,其中介绍了14种不成为编程天才或摇滚明星而对开源做出贡献的方法 ,我真的很喜欢这个想法。 这就是为什么我决定稍微采纳一下这篇文章,并告诉您如何以及…

华为云电脑和马云无影比_阿里云打造未来电脑无影,却因为5G限制,很难达到普及...

在9月17日,在2020阿里巴巴云栖大会上,阿里云发布了第一台云电脑"无影",极致的简约,一张卡片大小的机器就等于一台电脑了。看到这款电脑的宣传片,真的是极致的未来感,随随便便一块小透明玻璃就是电…

SQL SERVER 2016研究三

2016 SQL SEVER 全程加密程式 column encryption settingEnabled; 重点:需要使用.Net Framework 4.6 新建一个程式如下: 1、创建链接数据库,必选栏位,影响加密。 2、或者在web.config文件数据链接字符串增加如下语句: …

小车故障灯亮显示大全_史上最全汽车故障灯大全,留着一定有用!

大家好,我是汽修小诺,喜欢有关汽车知识的小伙伴请关注我哦,感谢大家!现在有车的朋友越来越多,开车途中难免会遇到汽车故障显示灯亮,从而不知道什么原因,有的朋友不敢开,等修理厂来检…

策略设计模式示例

本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因,并了解何时以及如何应用模式中的每一个。 在这里查看 ! 目录 …

vscode修改json.maxItemsComputed配置解决提示

由于要测试明细查询打印业务,分页每页显示30行,要打印30页以上的数据,在打印的过程中会出现分页的问题,这里使用仿真工具测试,需要修改mock数据,造数据,超过5000行就有提示了,需要扩…

【面试题系列|前端面试题】前端高频面试题总结(2021年最新版)

面试过不少前端从业者,简历写的平平淡淡,别人会的技能他也都会,看起来什么都掌握一些;有些会请过来当面聊一下,有些就直接拒绝了(如果是公司内要求独立完成项目的岗位,简历里放很多学习时候的DE…

ibatis中的xml配置文件

<?xml version"1.0" encoding"UTF-8" ?><!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd" ><sqlMap namespace"EOC_MUSIC"> <t…

mysql 更新 字段 递增_MySQL使用递增变量更新字段

我的一个数据库中有一个名为“ textile_events”的表。mysql> describe textile_events;---------------------------------------------------------| Field | Type | Key | Default | Extra |---------------------------------------------------------| id | int(11) | …

spring定时注解方式定时写到xml里面融合

把spring注解方式的定时写到xml里面&#xff0c;因为定时常常修改在class里面很不方便代码如下 在xlm <beans 里面加入 xmlns:task"http://www.springframework.org/schema/task" xsi:schemaLocation"里面加入 http://www.springframework.org/schema/task …

mysql数据库实训总结_数据库实训报告

实训报告实训课程&#xff1a;JAVA WEB项目实训实训名称&#xff1a;JAVA项目实训综合能力培养 实训地点&#xff1a;中国江苏无锡国家软件园巨蟹座C601 学生姓名&#xff1a;胥康 学号&#xff1a;140703133 指导教师&#xff1a;张志华实训时间&#xff1a;2016年7月22日实训…

观察者设计模式示例

本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中&#xff0c;您将深入研究大量的设计模式&#xff0c;并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因&#xff0c;并了解何时以及如何应用模式中的每一个。 在这里查看 &#xff01; 目录 …

mysql游标表间数据迁移_MySQL存储过程--通过游标遍历和异常处理迁移数据到历史表...

-- 大表数据迁移,每天凌晨1点到5点执行,执行间隔时间10分钟&#xff0c;迁移旧数据到历史表。DELIMITER $$USE dbx$$DROP PROCEDURE IF EXISTS pro_xx$$CREATE PROCEDURE pro_xx()BEGINDECLARE p_oalid INT DEFAULT 0;DECLARE STOP INT DEFAULT 0;DECLARE cur_oalid CURSOR FOR…

震惊!2021年数十个技术领域图谱曝光,包含Golang、区块链、人工智能、架构师等领域学习路线

前言:不知道你是否和我一样,刚开始学习某个技术领域的时候缺乏坚持的动力,没有一个清晰的学习路线,学习的过程中没有人指导,遇到问题没人一起解答,想深入学习某个领域而又无从下手,不知道该从何处学起?这不,你想要的技术图谱来啦。有了这款武功秘籍,不光能开阔视野,…

eclipse加载maven工程提示pom.xml无法解析org.apache.maven.plugins:maven-resources-plugin:2.4.3解决方案...

pom文件提示信息&#xff1a; Failure to transfer org.apache.maven.plugins:maven-resources-plugin:pom:2.4.3 from http://repo1.maven.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has el…

70多套java必练项目,适合小白上手!

导读&#xff1a;这些项目不管是找工作练手&#xff0c;还是公司使用当作模板进一步改进&#xff0c;亦或者是当作毕业设计&#xff0c;都很有借鉴意义&#xff01; 编译器建议使用&#xff1a;IDEA,Myeclipse,eclipse,HB-X等都可以。 数据库建议使用&#xff0c;mysql,oracle,…