CTFshow-PWN-前置基础(pwn17)

news2025/1/6 18:47:20

有些命令好像有点不一样?

不要一直等,可能那样永远也等不到flag

nc 上后,经过简单测试,1 和 4 并没有什么重要信息

3 会陷入一个等待,题目有说明不要一直等 ,而 5 是退出,因此猜测突破口在 2 

键入 2 后,可以看到 flag 就在根目录下

尝试命令注入,使用分号闭合前一条命令,后面插入新的命令

/;cat /ctfshow_flag

但是程序似乎陷入了一个无限的死循环,一直刷屏 ,可能是对输入字节进行了限制

我们缩短 payload:

;cat /ctf*
或者
/;cat /ct* 

这里星号 * 是通配符,表示匹配所有以 ctf 开头的文件

执行成功 

拿到 flag:ctfshow{331938ce-6990-4f79-91be-18fe53b701e4} 

接下来我们分析二进制文件

checksec pwn

是 64 位程序,保护全开 

拖进 ida64 反编译

可以看到 case 3 最终是会执行 system("cat /ctfshow_flag"); 命令的

但是在它之前有一个 sleep(0x1BF52u);

0x1BF52u 是什么概念,它表示等待大约 114514 秒,约合31小时48分钟

显然我们题目环境不可能存在这么久

我们再来看 case 2

伪代码详细分析: 

puts 就相当于 print 打印输出,这个没啥好说的

read(0, buf, 0xAuLL);

read() 函数是一个 UNIX 系统调用,通常用于从文件描述符中读取数据。

用法:

ssize_t read(int fd, void *buf, size_t count);

参数解释:

fd:文件描述符,表示要读取的文件或者输入源。在 UNIX 系统中,0 表示标准输入(STDIN),1 表示标准输出(STDOUT),2 表示标准错误(STDERR)。

  • 文件描述符0:用于接收用户输入或者从管道、重定向或者其他输入源读取数据。

  • 文件描述符1:用于向终端或者其他输出目标输出数据。

buf:指向存储读取数据的缓冲区的指针。

count:要读取的最大字节数。

这行代码从标准输入(文件描述符为0)读取最多10个字符到缓冲区 buf 中。

0xAuLL是十六进制表示的 10,表示最多读取 10 个字符。

这与我们前面的猜测一致,输入字符长度受限,而我们可用的 payload:;cat /ctf* 或者 /;cat /ct* 就刚好是 10 个字符。

注:0xAuLL 中的 uLL 表示这是一个无符号长长整型(unsigned long long)的常量,sleep(0x1BF52u)中的u表示无符号整型(unsigned)。

strcat(dest, buf);

这行代码将用户输入的内容追加到 dest 字符串后面

双击跟进 dest

可以看到 dest 被声明为一个大小为 4 字节的字符数组,用来存储字符串

详细解释:

dest 是一个标签(label),它是程序中一个位置的名称或者符号。

db 是汇编语言中的伪指令(pseudo-instruction),用于声明字节(byte)类型的数据。
4 表示数组的大小为4字节。
dup(?) 表示重复(duplicate)未知值(?)4次,即将4个未知值(通常为0)依次填充到数组中。

接下来直接调用 system() 函数执行了用户输入的内容

这也就是为什么我们可以实现命令执行,从而获取 flag

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

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

相关文章

基于springboot实现知识管理系统项目【项目源码+论文说明】

基于springboot实现知识管理系统演示 摘要 随着信息互联网信息的飞速发展,无纸化作业变成了一种趋势,针对这个问题开发一个专门适应师生作业交流形式的网站。本文介绍了知识管理系统的开发全过程。通过分析企业对于知识管理系统的需求,创建了…

FANUC发那科机器人示教器维修A05B-2490-C176

维修的fanuc发那科产品包括:发那科cnc数控系统,发那科伺服驱动器和伺服电机维修,发那科机器人维修,以及fanuc主轴驱动模块维修,发那科模块电源维修,数控系统电路板维修等。 1 发那科示教器液晶屏不好、花屏、白屏、黑屏、闪屏、竖线、摔破 2 FANUC示教…

[leetcode] 55. 跳跃游戏

文章目录 题目描述解题方法模拟java代码复杂度分析 相似题目 题目描述 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 tr…

Redis中的订阅发布(一)

订阅发布 概述 Redis的发布与订阅功能由PUBLISH、SUBSCRIBE、PSUBSCRIBE等命令组成。通过执行SUBSCRIBER命令,客户端可以订阅一个或多个频道,从而成为这些频道的订阅者(subscribe): 每当有其他客户端向被订阅的频道发送消息(message)时&…

springboot源码解析(一):启动过程

springboot源码解析(一):启动过程 1、springboot的入口程序 SpringBootApplication public class StartupApplication {public static void main(String[] args) {SpringApplication.run(StartupApplication.class, args);} }当程序开始执行之后,会调用SpringAppli…

蓝桥杯第十五届javab组个人总结

javab组 额今天早上打完了得对自己此次比赛做总结,无论是明年还参赛还是研究生蓝桥杯,体验感有点差,第一题其实一开始想手算但怕进位导致不准确还是让代码跑了,但跑第202420242024个数(被20和24整除)一直把…

开展在即!中银富登邀您共赴雄安2024数字城市展览会(雄安建博会)

中银富登村镇银行:雄安新区金融创新的领航者 在即将举办的2024雄安数字城市建设展览会上,中银富登村镇银行将以其在金融创新和普惠金融服务领域的卓越表现,成为展会的一大亮点。作为雄安新区首家全国性银行业金融机构总部,中银富…

谈谈微前端

相关问题 为什么要用微前端微前端的优缺点 回答关键点 独立开发 独立运行 独立部署 自治 微前端是一种架构理念,它将较大的前端应用拆分为若干个可以独立交付的前端应用。这样的好处是每个应用大小及复杂度相对可控。在合理拆分应用的前提下,微前端能…

SQL--约束

文章目录 约束约束的分类:按照约束的作用效果不同唯一约束主键约束外键约束检查约束非空约束默认值约束 按照是否跟随列和字段属性来创建约束行级约束表级约束 创建约束创建唯一约束创建完表之后创建唯一约束创建表的同时创建唯一约束行级约束表级约束 约束 CONSTR…

高标准化及可扩展的产品能力,助力声通科技运营效率不断提升

高标准化及可扩展的产品能力对企业发展具有重要意义,有助于企业提高运营效率、增强市场竞争力,并推动企业实现规模化发展。上海声通信息科技股份有限公司(下文称:声通科技或公司)作为我国领先的企业级全栈交互式人工智…

GIS数据制备,空间分析与高级建模教程

原文链接:GIS数据制备,空间分析与高级建模教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247601619&idx6&sn0231cde04d3657377587bd8015faf0e9&chksmfa820c34cdf58522df5a6eb2f44ee60630fd2d1132aa4517928a86591cc602da93aa…

常见的垃圾回收器(下)

文章目录 G1ShenandoahZGC 常见垃圾回收期(上) G1 参数1: -XX:UseG1GC 打开G1的开关,JDK9之后默认不需要打开 参数2:-XX:MaxGCPauseMillis毫秒值 最大暂停的时间 回收年代和算法 ● 年轻代老年代 ● 复制算法 优点…

测试用例的编写

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 软件测试用例得出软件测试用例的内容,其次,按照软件测试写作方法&#x…

nextjs渲染篇

1 服务器组件 默认情况下,Next.js 使用服务器组件。 1.1 服务器组件是如何呈现的? 在服务器上,Next.js 使用 React 的 API 来编排渲染。渲染工作被拆分为多个块:按单个路段和Suspense 每个区块分两个步骤呈现: Re…

程序中调用DB存储过程记得异常处理时尝试回滚可能存在的事务

程序中调用DB过程要注意这种情况: 有些存储过程需要执行比较久,在数据库中直接跑本身没有出错,但从程序中调用该存储过程会由于超时进入程序异常处理,这时数据库后台依然在跑着该存储过程,如果该存储过程中有启用事务…

选择生产制造项目管理系统?全面解析功能与实际应用!

生产效率和项目规划是制造企业亟需解决的难题,想要从容的应对这些挑战,离不开好用的生产制造项目管理系统。下面我们全面解析什么才能称得上是好用的生产制造项目管理系统。 一、好用的生产制造项目管理系统 什么样的项目管理系统才能算是好用呢&#x…

【Java框架】Spring框架(二)——Spring基本核心(AOP)

目录 面向切面编程AOPAOP的目标:让我们可以“专心做事”专心做事专心做事解决方案1.0专心做事解决方案2.0蓝图 AOP应用场景AOP原理AOP相关术语术语理解 AOP案例实现前置/后置/异常/最终增强的配置实现1.依赖2.业务类3.日志类4.配置切入点表达式匹配规则举例 环绕增强…

【微信小程序】分包

整个小程序所有分包大小不超过 20M(开通虚拟支付后的小游戏不超过30M) 单个分包/主包大小不能超过 2M在小程序启动时,默认会下载主包并启动主包内页面,当用户进入分包内某个页面时,客户端会把对应分包下载下来&#xf…

13段×5位LED数码管驱动数显驱动IC抗干扰数码屏驱动芯片VK1624 SOP24/DIP24

产品型号:VK1624 产品品牌:永嘉微电/VINKA 封装形式:SOP24/ DIP24 工程服务,技术支持! 概述 VK1624是一种数码管或点阵LED驱动控制专用芯片,内部集成有3线串行接口、数据锁存器、LED 驱动等电路。SEG脚…

Java中的容器,线程安全和线程不安全

Java中的容器主要指Java集合框架中的一系列类,它们提供了存储和操作对象的能力。在讨论容器的线程安全性时,我们可以将其分为两大类: 线程安全的容器: Vector: 这是ArrayList的线程安全版本,所有方法都被同步以确保在…