首页 > 其他分享 >进阶 stack smashing--canary 报错利用 && environ泄露栈地址

进阶 stack smashing--canary 报错利用 && environ泄露栈地址

时间:2024-04-12 14:13:44浏览次数:24  
标签:进阶 -- smashing flag libc 地址 environ 报错 偏移

进阶 stack smashing--canary 报错利用 && environ泄露栈地址

这部分是对进阶stack smashing的使用,以及对 environ的认识,我们可以看一个buu上具体的题目

题目连接 https://buuoj.cn/challenges#wdb2018_guess

看一下保护,pie没有开

64位ida载入看一下

那么在ida里面看见还是挺麻烦的,首先程序打开了flag文件,然后把flag读取到的栈上的buf数组中,有三次输入的机会,而且gets存在栈溢出

那么思路是通过找到偏移我们可以把puts_got表的地址打印出来,然后得到libc的地址之后可以找到environd的地址,这里解释一下这个environ。

environ在Linux C中,environ是一个全局变量,它储存着系统的环境变量。它储存在libc中因此environ是沟通libc地址与栈地址的桥梁。简而言之就是这里面存着环境变量的地址,也就是可以通过这个,找到栈上的地址,然后计算偏移找到buf存的flag地址,最后一次输入在输入flag的地址就可以打印出flag

看一下environ存的值

然后再找一下我们输入内容的地址和__libc_argv[0] 指针所指向的字符串的偏移

计算一下偏移0x7fffffffe5d8-0x7fffffffe4b0 = 0x128,那么只要我们输入0x128个垃圾数据之后再输入puts got表的地址就可以泄露出puts的真实地址了,那么就可以拿到一系列的地址

然后我们找一下环境变量距离flag位置的偏移

那么偏移为0x7fffffffe5e8 - 0x7fffffffe480 = 0x168,然后得到了flag的偏移就可以完善一下脚本了

exp:

标签:进阶,--,smashing,flag,libc,地址,environ,报错,偏移
From: https://www.cnblogs.com/CH13hh/p/18130291

相关文章

  • 七大获取免费SSL证书方式
    对于个人网站、小型企业以及测试用户来说,免费的ssl证书是个不错的选择,下面分享几个免费证书获取方式:一、阿里云通过阿里云SSL证书服务可以获得免费型DVSSL,每个阿里云账号可以申请20个的免费SSL证书资源包,登录阿里云直接搜索免费SSL即可,注意目前阿里云免费证书时效为3个月。二......
  • OV证书——提升企业在线身份信誉
    简介在当今的数字化时代,网络安全与用户信任成为企业线上运营的基石,而SSL/TLS证书则是确保网站数据传输安全、提升网站信誉度的关键工具之一。其中,组织验证(OV)证书作为一种特殊类型的SSL证书,通过深入验证网站所有者的实体身份,为网站的安全性和信任度赋予了更强的背书,以其高安全性和......
  • SQL 执行大脚本 提示内存不足 解决办法
    SQL 执行大脚本 提示内存不足 解决办法 用微软自带的sqlcmd工具,可以导入执行。以SQL Server 2008R版本为例:第一步:Win+R 键入:cmd 命令,开启命令行工具;第二步:键入:cd C:\Program Files\Microsoft SQL Server\100\Tools\Binn (具体目录路径跟你安装的SQL位置有关)第三步:键入......
  • ntpd内网同步及遇到的问题
           NTP(NetworkTimeProtocol,网络时间协议)是用来使网络中的各个计算机时间同步的一种协议。它的用途是把计算机的时钟同步到世界协调时UTC,其精度在局域网内可达0.1ms,在互联网上绝大多数的地方其精度可以达到1-50ms。(1s=1000ms)NTP服务器就是利用NTP协议提供时间同步......
  • 身份证识别ocr、身份证实名认证接口文档
    每一次验证背后,都是对用户数据安全的承诺,对平台信誉的坚守。翔云身份证实名认证API,通过身份证识别接口仅需一键上传身份证图片即可快速识别身份证信息,翔云实名认证接口实时联网查验证件信息的真伪。​PHP身份证实名认证接口文档代码如下:'https://netocr.com/verapi/veriden......
  • Java 中文官方教程 2022 版(四)
    原文:docs.oracle.com/javase/tutorial/reallybigindex.html方法引用原文:docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html你可以使用lambda表达式来创建匿名方法。然而,有时候lambda表达式仅仅是调用一个已存在的方法。在这种情况下,通过名称引用现有......
  • 程序员生存指南:如何用智慧闯荡就业寒冬?
    大家好,我是三进三出纵横传统行业、互联网行业与新兴蓝海行业,摸爬滚打在程序员圈子里的“老司机”。今天,我要和大家分享一些在就业寒冬中如何对用人方/大厂去魅,以及如何获取那些不对外招聘的岗位的秘密。1.用人方:揭开神秘面纱就业寒冬,用人方和大厂似乎成了一座座难以攀登的高山。......
  • 记一次 el-ment plus el-radio 踩坑经历
    需求:对树结构进行子节点的添加,其中子节点可通过el-radio来设置状态的启用/禁用点击保存后树结构数据新增一条数据问题:对新增/编辑状态el-radio都不为空默认为启用状态,编辑是直接回显详情状态,但是都无选中效果,回显的默认值为null,在操作change事件时每项都是选中状态;在......
  • Java 中文官方教程 2022 版(六)
    原文:docs.oracle.com/javase/tutorial/reallybigindex.html字符和字符串总结原文:docs.oracle.com/javase/tutorial/java/data/stringsummary.html大多数情况下,如果您使用单个字符值,您将使用基本的char类型。然而,有时您需要将char用作对象—例如,作为期望对象的方法参数。J......
  • 软件研发量化管理的四类考核KPI指标
    哈佛商学院的研究发现,设定了明确目标的学生,其中3%的人的收入比其他97%的人总和还要多十倍。同样,在软件工程等技术流程中,设定关键绩效指标(KPI)对于开发团队达成目标也非常重要。选择合适的软件工程度量标准能够帮助评估效率,并提供推动改进所需的有价值见解。如果你是与远程团队合作......