pwnable.kr--pwn游戏之fd

news2024/11/28 10:47:13

题目描述:


大致告诉我们研究的可能是Linux下的文件描述符。需要我们用ssh链接过去找到flag。于是我们就过去看看:


乍看情况有点像简单nc,我们尝试看看目录下都有什么:


看到flag,那么尝试输出呢?


Permission denied意味着权限被拒绝。我们没有权力访问这个文件。我们还看到有两个文件,一个fd,一个fd.c。我们需要把这个代码趴下来做一个小小的代码审计,这里运用到的命令有这些:

scp(Secure Copy Protocol)是用于在本地系统和远程系统之间安全地传输文件的命令行工具。下面是一些常见的scp命令用法:

  1. 从本地系统复制到远程系统:

     

    bashCopy code

    scp local_file username@remote_host:remote_path

    示例:

     

    bashCopy code

    scp myfile.txt user@192.168.1.100:/home/user/documents/

  2. 从远程系统复制到本地系统:

     

    bashCopy code

    scp username@remote_host:remote_path local_file

    示例:

     

    bashCopy code

    scp user@192.168.1.100:/home/user/documents/myfile.txt /local/path/

  3. 从远程系统复制到本地系统并保持文件名相同:

     

    bashCopy code

    scp username@remote_host:remote_file local_path

    示例:

     

    bashCopy code

    scp user@192.168.1.100:/home/user/documents/myfile.txt .

  4. 从本地系统复制到远程系统并保持文件名相同:

     

    bashCopy code

    scp local_file username@remote_host:remote_path

    示例:

     

    bashCopy code

    scp myfile.txt user@192.168.1.100:/home/user/documents/


    这个scp用于远程传送文件,我们可以把远程服务器的文件复制一份传到本地:



那么在我本地的当前目录就会有这两个文件。我们查看下fd的源代码:

这个代码的大致流程如下:

  1. 接受命令行参数,期望有一个参数传递给程序。
  2. 将传递的参数通过 atoi 函数转换为整数,并减去 0x1234
  3. 使用得到的整数作为文件描述符(File Descriptor),调用 read 函数从文件中读取数据到缓冲区 buf
  4. 将读取到的内容与字符串 "LETMEWIN\n" 进行比较,如果相同则执行一些操作。
  5. 如果比较结果为真,则输出 "good job :)",执行 system("/bin/cat flag"); 命令来显示 flag 文件的内容,并退出程序。

    因此我们需要在执行的时候传入一个参数,使得它能触发system函数。这里蕴含了一个小小的知识点。就是在read这个函数的第一个参数,如果这个文件描述符为0则为标准输入输出,也就是从用户终端读取数据放入buf中。因此我们需要使fd为0。才能触发后续流程。atoi这个函数会把我们传入的数据变成整数,因此我们输入的时候不能传入0x1234。


    我们需要传入4660,试验一下:


    成功走到else语句。再通过strcmp判断即可,意味着如果我们输入LETMEWIN,程序讲进入if语句。(因为判断成功后strcmp返回的是0,再取反为真)我们尝试一下:


    本地成功,再去远程服务器执行下,得到flag:


    通过这题我们能学到ssh远程链接的一些操作以及scp从远程服务器复制文件的操作。并且参杂了一些代码审计的思想。并找到漏洞成功执行。

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

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

相关文章

AI换脸的一种技术实施例

刚刚看一个帖子的时候发现了AI识别中一个可以利用到其它场景的的一个通用处理步骤:人脸矫正。 人脸识别过程: 1.首先识别到关键的人脸部分,经过一个粗筛过程,把目标物的脸部图样先抓出来。 2.然后,因为人脸的水平&…

AI自动直播软件,ai无人直播工具2.0支持多平台矩阵直播一键同步直播脚本内容【直播脚本+使用技术教程】

AI实景直播软件简介: 支持一台手机自动直播,支持语音和文字同时回复,商品自动弹窗,支持抖音、快手、视频号、美团平台直播,支持矩阵直播,一键同步直播脚本内容。 设备需求: 安卓手机&#xf…

Hack_Kid

Hack_Kid 靶机地址:https://download.vulnhub.com/hackerkid/Hacker_Kid-v1.0.1.ova 一、主机发现 发现靶机IP为192.168.80.135 二、端口扫描 发现靶机开启了80、53、9999端口 三、信息收集 1.访问80端口 2.访问9999端口 根据靶场作者的提示,不…

深眸科技革新升级OCR技术,与AI视觉实现有效融合赋能各行业应用

OCR即光学字符识别,是通过扫描仪或工业相机等电子设备检查打印的字符,并通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程。 目前,随着机器视觉和人工智能技术的进一步升级,OCR技术实…

大数据毕业设计选题推荐-机房信息大数据平台-Hadoop-Spark-Hive

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

北邮22级信通院数电:Verilog-FPGA(9)第九周实验(4)实现寄存器74LS374

北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章,请访问专栏: 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 目录 一.代码部分 1.1 reg_74LS374.v 1.2 reg_LS3…

渗透测试——1

1.计算机地址 计算机在网络中的地址有以下3类: (1)物理地址 物理地址相当于现实生活中的人脸,是不可改变的,独一无二的。每张网卡的物理地址是固定不变的。 物理地址由六个十六进制数组成,如&…

chatGPT API中参数temperature的含义是什么

在 ChatGPT API 中,temperature 参数用于控制回答的确定性和创造性。temperature 的值范围通常是从 0 到 1。这个参数影响模型生成回答时的随机性: 低温度值(如 0 或接近 0):会导致模型生成更确定、更一致、更少出乎意…

C++面向对象编程(3)——常用关键字介绍(TODO)

本篇会逐步添加一些C的关键字,持续更新... 一. default 1.1 场景 如果对构造函数进行了重载,则编译器不会隐式的生成一个默认的构造函数,此时如果调用了默认构造函数会在编译时报错,但是很多时候我们是需要默认构造函数的。如何…

sqli-labs(2)

7. 输入?id1 --显示格式错误 ?id1" --正常 测试 ?id1“ and sleep(5) -- 发现并没有成功 ?id1) --显示格式错误继续尝试 ?id1)) -- 显示正常 测试 ?id1“ and sleep(5) -- 发现sleep执行 对于语句闭合的尝试主要从 " ()来测试 报错语句尝试发现不回显报错信息…

如何利用自动发现将现网的进程纳入到监控系统中?

进程监控是一项关键任务,旨在监测系统中运行的进程的性能和状态。通过有效的进程监控,可以实时了解进程的运行情况,及时发现问题并采取措施,确保系统的稳定性和性能。 本期EasyOps产品使用最佳实践,我们将为您揭晓&am…

数据结构与算法之美学习笔记:19 | 散列表(中):如何打造一个工业级水平的散列表?

目录 前言如何设计散列函数?装载因子过大了怎么办?如何避免低效的扩容?如何选择冲突解决方法?工业级散列表举例分析解答开篇内容小结 前言 本节课程思维导图: 今天,我们就来学习一下,如何设计一…

FPGA模块——IIC协议(FPGA做主机操作24C64)

FPGA模块——IIC协议(FPGA做主机操作24C64) EEPROM(24C64)向器件写数据时序向器件读数据时序 IIC协议FPGA主机代码IIC驱动 EEPROM(24C64) 掉电不丢失,采用固定的读写协议。数据的稳定性和可重复…

2023.11.16 hivesql高阶函数之开窗函数

目录 1.开窗函数的定义 2.数据准备 3.开窗函数之排序 需求:用三种排序方法查询学生的语文成绩排名,并降序显示 4.开窗函数分组 需求:按照科目来分类,使用三种排序方式来排序学生的成绩 5.聚合函数与分组配合使用 6.聚合函数同时和分组以及排序关键字配合使用 --需求1&…

JavaWeb Day10 案例-部门管理

目录 一、查询部门 (一)需求 (二)思路 (三)查询部门 (四)、前后端联调 二、删除 (一)需求 (二)思路 (三&#xf…

如何深度了解汤泉场所?VR全景给你答案

天气逐步转凉,温泉、水会这些室内汤泉场所开始登上消费的主战场。伴随着人们物质生活水平的提高,人们对休闲养生会馆的要求也愈发旺盛,汤泉场所也逐渐从单一的洗浴开始向休闲、娱乐、保健、桑拿等多种业态形式发展,那么大家如何深…

安全狗云安全体系为高校提升立体化纵深防御能力

客户情况 某高校有服务器500台,对外站点200个,核心交换流量20G。 客户痛点 校园网系统分类较多,并且每类网站中安全级重要程度又各不相同,同时有多个网络出口(如:教育网、电信网、移动网等),二级学院存在…

【java学习—十五】Thread类的有关方法(3)

文章目录 1. 基本方法2. 线程的优先级3. 进阶方法3.1. 举例3.1.1. 线程让步3.1.2. join() 方法3.1.3. sleep()方法3.1.4. stop() 方法3.1.4. isAlive() 方法 1. 基本方法 方法名作用void start()启动线程,并执行对象的 run() 方法run()线程在被调度时执行的操作Str…

电脑提示d3dcompiler43.dll缺失怎么解决?四种方法帮你轻松搞定!

d3dcompiler_43.dll是一个与DirectX相关的动态链接库(DLL)文件,它主要用于Windows操作系统上的图形和游戏应用程序。这个文件的主要作用是编译和解析DirectX应用程序中的图形代码。 DirectX是一个强大的图形API(应用程序编程接口&…

flutter项目中使用阿里图标库自定义图标步骤,5分钟搞定

因为flutter自带的图标可能并不能满足业务需求,所以需要加入图标非常丰富的阿里图标库的支持,阿里图标库的地址:iconfont-阿里巴巴矢量图标库,先看一下使用阿里图标库后的效果图:网页端和手机端都是可以正常运行的&…